日期:2014-05-18  浏览次数:20998 次

求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增加方法
        }