如何在子窗体设置父窗体的按钮可见?
解决方案 »
- c# 整数加法计算机
- C# WinForm 编写的QQ程序源码
- VS2005出现异常错误自动退出
- 传输同意一个DataSet,Remoting是不是比Web Services耗费的网络流量小?
- winform中的datagrid如何实现webform中的datagrid的多种操作功能??
- 感觉自己基础知识很差,高手们给个建议,该怎么来!
- 定义问题
- 创建一个队列轮循的公共方法,通过接收参数来控制轮循,做到不管多少个图片,都可以挨个推送,先进先出的原则,求教,队列轮循怎么写,求代码参考下
- 请教一个多线程的问题
- 一个简单的问题,一定给分
- 如何获取RichTextBox里面某一个颜色的文字?
- 已有Oracle数据库是否必须安装客户端?
private void button1_Click(object sender, EventArgs e)
{
button1.Visible=false;
Form2 r = new Form2(this);
r.Show();
}Form2
Form1 fr;
public Form2(Form1 frm)
{
fr = frm;
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
fr.button2.Visible = true;
}
父窗体的定义中加一个属性,将此Button暴露出去,子窗体获得父窗体的引用之后,就可以通过此属性来使用该Button了。
那一个属性可以将此Button暴露出去?
比如子窗体中加一个CheckBox控件,Modify属性改成Public(不建议这么操作,可以自定义事件,如何自定义,查MSDN){
//父窗体Show子窗体代码
ChildForm fc = new ChildForm();
fc.CheckBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
this.btn1.Hide();
}
2using System;
3using System.Collections.Generic;
4using System.ComponentModel;
5using System.Data;
6using System.Drawing;
7using System.Text;
8using System.Windows.Forms;
9
10namespace 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”)。
//下面是子窗体的代码
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Drawing;
6using System.Text;
7using System.Windows.Forms;
8
9namespace 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是否变成灰色的不可用的状态了呢?
将button设置为public;打开子窗体时:
FormChild frm = new FormChild(this);
frm.MdiParent = this;
frm.frm父窗体 = this;
frm.Show();子窗体中:
public 父窗体 frm父窗体;在此便可以调用:frm父窗体.button.Visible=true;