VS.NET开发小技巧——C/S程序中MDI子窗体控制其父窗体控件

简介:
    看到这个题目相信有很多人都会说:“这个还用说,早会了!”
      没错,无可否认有很多人肯定都知道了。然而最近突然有人问我,说他在网上查找了半天不是没有找到合适的文章就是找到的文章不是很清楚。于是我想就此问题的解决发表到我的博客中,让更多的人能够清楚实现方法。
      因为主要是窗体回调问题,所以就不过多阐述了,给出详细的代码应该就可以理解了。

      我们这里假设已经存在了两个窗体分别为:FormFather(父窗体)和FormChild(子窗体),而父窗体中有一个名为Btn_OpenChild的按钮,用来打开子窗体,子窗体中也有个名为Btn_IsTrue按钮和一个TextBox控件。当TextBox控件中输入“True”时,父窗体的Btn_OpenChild可用,并关闭子窗体,当输入其它任何字符或字符串父窗体的Btn_OpenChild都不可用而不关闭子窗体,当然刚启动程序时的父窗体的Btn_OpenChild按钮是可用的。下面是实现的代码:
 1 // 下面是主窗体的代码
 2 using  System;
 3 using  System.Collections.Generic;
 4 using  System.ComponentModel;
 5 using  System.Data;
 6 using  System.Drawing;
 7 using  System.Text;
 8 using  System.Windows.Forms;
 9
10 namespace  MDIFormDemo
11 {
12    public partial class FormFather : Form
13    {
14        public FormFather()
15        {
16            InitializeComponent();
17        }

18
19        private void OpenChild()//在MDI父窗体中显示子窗体
20        {
21            foreach (Form f in this.MdiChildren)
22            {
23                if ((f) is FormChild)
24                {
25                    f.Activate();
26                    return;
27                }

28            }

29            FormChild frm = new FormChild(this);
30            frm.MdiParent = this;
31            frm.Show();
32        }

33
34        private void FormFather_Load(object sender, EventArgs e)
35        {
36            OpenChild();//父窗体被打开时,子窗体也同时被打开
37        }

38        private void Btn_OpenChild_Click(object sender, EventArgs e)
39        {
40            OpenChild();//如果Btn_OpenChild可用,则点击此按钮也能打开子窗体
41        }

42}
主窗体中没有什么特别的,只是注意第29行的代码中的“this”,接合子窗体的代码你就能明白为何要加上这个“this”了(平时只为了打开子窗体时,我们都不会需要在括号中输入“this”)。
//下面是子窗体的代码 
1
using  System;
 2 using  System.Collections.Generic;
 3 using  System.ComponentModel;
 4 using  System.Data;
 5 using  System.Drawing;
 6 using  System.Text;
 7 using  System.Windows.Forms;
 8
 9 namespace  MDIFormDemo
10 {
11    public partial class FormChild : Form
12    {
13        private FormFather MyForm;
14        public FormChild (FormFather f)
15        {
16            InitializeComponent();
17            MyForm = f;
18        }

19
20        private void FormChild_Load(object sender, EventArgs e)
21        {
22
23        }

24
25        private void Btn_IsTrue_Click(object sender, EventArgs e)
26        {
27             if (this.textBox1.text == "True")
28             {
29                   MyForm.Btn_OpenChild.Enabled = true;
30                  this.Close();
31             }

32             else
33             {
34                  MyForm.Btn_OpenChild.Enabled = false;
35             }

36        }

37}
主窗体的按钮能用暂且不说,你先在子窗体的TextBox控件中输入一个非“True”的字符或字符串,此时你看看主窗体的Btn_OpenChild是否变成灰色的不可用的状态了呢?

以上代码运行环境为VS.NET2005,本人在此下面运行通过,你不妨建立一个MDIFormDemo工程试验一下。



本文转自刚刚博客园博客,原文链接:http://www.cnblogs.com/lijigang/archive/2007/01/14/619878.html,如需转载请自行联系原作者

相关文章
|
1月前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
20天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
71 13
|
1月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
35 4
|
1月前
|
机器学习/深度学习 人工智能 物联网
.NET 技术:引领未来开发潮流
.NET 技术以其跨平台兼容性、高效的开发体验、强大的性能表现和安全可靠的架构,成为引领未来开发潮流的重要力量。本文深入探讨了 .NET 的核心优势与特点,及其在企业级应用、移动开发、云计算、人工智能等领域的广泛应用,展示了其卓越的应用价值和未来发展前景。
61 5
|
1月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
2月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
44 1
|
1月前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
2月前
|
开发者 Windows
.NET 开源扁平化、美观的 C/S 控件库
【10月更文挑战第23天】介绍了三款适用于 .NET 平台的开源扁平化、美观的 C/S 控件库:MaterialSkin 采用 Google Material Design 风格,适合现代感界面;Krypton Toolkit 提供丰富控件,界面易于定制;Fluent Ribbon Control Suite 模仿 Office 界面,适合复杂功能应用。每款控件库均附有示例代码及 GitHub 链接。
108 0