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,如需转载请自行联系原作者

相关文章
|
8天前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
108 3
|
8天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
8天前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
1月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
34 1
|
1月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
1月前
|
开发者 Windows
.NET 开源扁平化、美观的 C/S 控件库
【10月更文挑战第23天】介绍了三款适用于 .NET 平台的开源扁平化、美观的 C/S 控件库:MaterialSkin 采用 Google Material Design 风格,适合现代感界面;Krypton Toolkit 提供丰富控件,界面易于定制;Fluent Ribbon Control Suite 模仿 Office 界面,适合复杂功能应用。每款控件库均附有示例代码及 GitHub 链接。
|
1月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器

热门文章

最新文章

下一篇
无影云桌面