VS.NET 2005(C#)的C/S程序中MDI子窗体控制其父窗体
2011-07-04 17:13
330 查看
我们这里假设已经存在了两个窗体分别为:FormFather(父窗体)和FormChild(子窗体),而父窗体中有一个名为Btn_OpenChild的按钮,用来打开子窗体,子窗体中也有个名为Btn_IsTrue按钮和一个TextBox控件。当TextBox控件中输入“True”时,父窗体的Btn_OpenChild可用,并关闭子窗体,当输入其它任何字符或字符串父窗体的Btn_OpenChild都不可用而不关闭子窗体,当然刚启动程序时的父窗体的Btn_OpenChild按钮是可用的。下面是实现的代码: //下面是主窗体的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace MDIFormDemo
{
public partial class FormFather : Form
{
public FormFather()
{
InitializeComponent();
}
private void OpenChild()//在MDI父窗体中显示子窗体
{
foreach (Form f in this.MdiChildren)
{
if ((f) is FormChild)
{
f.Activate();
return;
}
}
FormChild frm = new FormChild(this);
frm.MdiParent = this;
frm.Show();
}
private void FormFather_Load(object sender, EventArgs e)
{
OpenChild();//父窗体被打开时,子窗体也同时被打开
}
private void Btn_OpenChild_Click(object sender, EventArgs e)
{
OpenChild();//如果Btn_OpenChild可用,则点击此按钮也能打开子窗体
}
}
主窗体中没有什么特别的,只是注意第29行的代码中的“this”,接合子窗体的代码你就能明白为何要加上这个“this”了(平时只为了打开子窗体时,我们都不会需要在括号中输入“this”)。
//下面是子窗体的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace MDIFormDemo
{
public partial class FormChild : Form
{
private FormFather MyForm;
public FormChild (FormFather f)
{
InitializeComponent();
MyForm = f;
}
private void FormChild_Load(object sender, EventArgs e)
{
}
private void Btn_IsTrue_Click(object sender, EventArgs e)
{
if (this.textBox1.text == "True")
{
MyForm.Btn_OpenChild.Enabled = true;
this.Close();
}
else
{
MyForm.Btn_OpenChild.Enabled = false;
}
}
}
主窗体的按钮能用暂且不说,你先在子窗体的TextBox控件中输入一个非“True”的字符或字符串,此时你看看主窗体的Btn_OpenChild是否变成灰色的不可用的状态了呢?
以上代码运行环境为VS.NET2005。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace MDIFormDemo
{
public partial class FormFather : Form
{
public FormFather()
{
InitializeComponent();
}
private void OpenChild()//在MDI父窗体中显示子窗体
{
foreach (Form f in this.MdiChildren)
{
if ((f) is FormChild)
{
f.Activate();
return;
}
}
FormChild frm = new FormChild(this);
frm.MdiParent = this;
frm.Show();
}
private void FormFather_Load(object sender, EventArgs e)
{
OpenChild();//父窗体被打开时,子窗体也同时被打开
}
private void Btn_OpenChild_Click(object sender, EventArgs e)
{
OpenChild();//如果Btn_OpenChild可用,则点击此按钮也能打开子窗体
}
}
主窗体中没有什么特别的,只是注意第29行的代码中的“this”,接合子窗体的代码你就能明白为何要加上这个“this”了(平时只为了打开子窗体时,我们都不会需要在括号中输入“this”)。
//下面是子窗体的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace MDIFormDemo
{
public partial class FormChild : Form
{
private FormFather MyForm;
public FormChild (FormFather f)
{
InitializeComponent();
MyForm = f;
}
private void FormChild_Load(object sender, EventArgs e)
{
}
private void Btn_IsTrue_Click(object sender, EventArgs e)
{
if (this.textBox1.text == "True")
{
MyForm.Btn_OpenChild.Enabled = true;
this.Close();
}
else
{
MyForm.Btn_OpenChild.Enabled = false;
}
}
}
主窗体的按钮能用暂且不说,你先在子窗体的TextBox控件中输入一个非“True”的字符或字符串,此时你看看主窗体的Btn_OpenChild是否变成灰色的不可用的状态了呢?
以上代码运行环境为VS.NET2005。
相关文章推荐
- VS.NET开发小技巧——C/S程序中MDI子窗体控制其父窗体控件
- <转> VS.NET开发小技巧——C/S程序中MDI子窗体控制其父窗体控件
- VS.NET开发小技巧——C/S程序中MDI子窗体控制其父窗体控件
- VS C#.net 2005 程序打包(收藏)
- VS C#.net 2005 程序打包
- 【C#】 .net入门之Windows窗体程序
- Delphi程序调用C#.Net编译的DLL并打开窗体(详解)
- C#.net实现windows窗体程序对Excel文件的读写操作
- VS.NET2005打包程序遇到不可恢复的生成错误,解决方案
- vs.net 2005 C# WinForm GroupBOX 的BUG?尝试读取或写入受保护的内存。这通常指示其他内存已损坏
- 用vs .net 2005 beta2开发简单smtp邮件程序有感
- 用C#调用Windows API和其它进程通信及C# 获得另外一程序 句柄 后控制该程序 控制其透明 窗体大小
- vs.net 2005中修改程序为可调试
- vs 2005 固定asp.net程序开发服务器的 port
- 解决WinForm(C#)中MDI子窗体最大化的问题(VB.net中也适用)
- 在vs.net 2005 手动实现 窗体认证 的问题
- VS .NET(C#)測試程序記錄時間方法
- 自己做的 VS.net 2005 sp1 程序注释使用的宏代码
- 体验:用C#写存储过程(VS.NET 2005)
- 关于VS.NET 2005 外接程序开发