我主窗体放了两个panel ,左边panel里放了个用户控件,右边panel放了个用户控件,左边的用户控件内放了一个tabControl,将里面的TabPage清空,点击右边的panel里的按钮 传进不同的参数,想添加不同的TabPage,我的做法是,将左边用户控件的tabControl设置成PUBLIC ,在右边的的用户控件的按钮事件中写:UCMessageInfo info=new UCMessageInfo();       //UCMessageInfo 是左边的用户控件TabPage tp = new TabPage();tp.Text = "abc";msgInfo.tabControl1.TabPages.Add(tp);但结果却是点击按钮 左边用户控件不会增加选项卡,代码也没爆错,求原因,求解决方法

解决方案 »

  1.   

    左边控件实例不是info吗,怎么填加选项卡的是msgInfo
      

  2.   

    不知道你的那个用户控件是怎么定义的。
    你现在是想在用户控件中讲事件的处理都写出来吗?你这个逻辑就很怪,为什么要在一个用户控件的事件方法中追加操作别的用户控件的处理呢?
    如果你只是需要控件的组合,你完全可以在承载他们的窗体下面做赋值处理。
    没必要在一个用户控件中调用另一个控件的属性,你这样new出来的对象是掉不到的~
      

  3.   

    如果你实在是想做的话,你可以这样。
    你不需要将第一个用户组件设置成public
    你在第二个用户组件面前追加以下代码:        private static string _strTitle = "";        public TabControl tab { get; set; }        private void button1_Click(object sender, EventArgs e)
            {
                _strTitle = textBox1.Text;
                tab.TabPages.Add(_strTitle);
            }
    在调用这两个用户控件的主窗的form_load事件中追加以下代码:        private void Form1_Load(object sender, EventArgs e)
            {
                ucMessageInforRight1.tab = (TabControl)ucMessageInfo1.Controls[0];
            }