求C#高手解答:点击子窗体的事件 主窗体添加新控件
有个主窗体MainFrm,里面有个TabControl,TabControl里面有个Panel,panel用来加载其他子窗体用的,建立一个子窗体A,A窗体中有个Button,我想点击这个Button之后,在主窗体中的TabControl 自动增加一个选项卡。怎么解决呢
[解决办法]
- C# code
public partial class Form1 : Form { private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(this); frm2.Show(); } } public partial class Form2 : Form { Form1 form1;public Form2(Form1 f1){InitializeComponent();form1 = f1;}System.Windows.Forms.TabPage tabPage1=new System.Windows.Forms.TabPage(); form1.tabControl1.Controls.Add(this.tabPage2); form1.tabControl1.Controls.Add(this.tabPage3); form1.tabControl1.Location = new System.Drawing.Point(348, 207); form1.tabControl1.Name = "tabControl1"; form1.tabControl1.SelectedIndex = 0; form1.tabControl1.Size = new System.Drawing.Size(200, 100); form1.tabControl1.TabIndex = 11;form1.tabControl1.Controls.Add(this.tabPage1);
[解决办法]
在from1中写一个增加选项卡的方法,publick void Cread(){//你的代码}
//弹出子窗体
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2(this);
frm2.Show();
}
子窗体:
Form1 form1;
public Form2(Form1 f1)
{
InitializeComponent();
form1 = f1;
}
在需要添加选项卡时调用主窗体的方法:form1.Cread();
[解决办法]
把父窗口的引用传给子窗口
并且父窗口控件设置成公共
这样子窗口就可以控制了
[解决办法]
使用委托呀!
MainForm:
- C# code
/// <summary> /// 假设你是在这个按钮事件打开子窗体的 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.AddTabPageEvent += new Form2.AddTabPageHandler(frm_AddTabPageEvent); frm.ShowDialog(); } void frm_AddTabPageEvent() { //写你的tabpage增加方法 }