winfrom里有一個frmMain的主窗体,主窗体里有一個label,请问在一个usercontrols(用户自定义控件)里如何获取主窗体里label的值?usercontrols的代码如下:
……
……
using System.Windows.Forms;namespace MacauitSystem
{
    public partial class Top2MenuClass : UserControl
    {
        //我需要在这里定义一个string a=(主窗体里label的值),请问如何解决?        public Panel[] childPan2 = new Panel[4];
        
        public Top2MenuClass()
        {
            InitializeComponent();
            this.Dock = DockStyle.Top ;
        }

解决方案 »

  1.   

    this.Parent.Controls["Label控件名"]
      

  2.   

    this只能在函数里用,在我上面那种情况下无法用this
      

  3.   

    你不会在控件Load事件里赋值么?
      

  4.   

    问题是我就需要在红色字体那里获取值啊,然后设置public Panel[] childPan2 = new Panel[4];
     里面Panel的个数啊(我是想用label里的值来自动设置panel个数,而不是用固定的数字来设定啊)。
      

  5.   

    补充一点,还需要把主窗体的Label的Modifier属性由private改为internal 或public,不然外部控件读不到
      

  6.   

    在定义时
    Panel[] childPan2=null;
     在load()中读取到label值后直接初始化即可,那就不用定义什么string 字段了。
      

  7.   

    唉,我一定要在那里获取的,楼上的设置为null我试过,不能解决
      

  8.   


    这种对象依赖很不符合低耦规范你的需求是什么,或许,你应该在usercontrol中定义相关公开事件,而主窗体就调用这些事件,来操作usercontrol
      

  9.   

    xixi,在用户自定义控件里写一个公有属性public string LabelName,然后在主窗体里调用
    public partial class MainForm : Form
    {
    private Top2MenuClass top2menu=new Top2MenuClass (); public MainForm ()
      {
      InitializeComponent();
      top2menu .LableName=this.label1.Text;
      }

    }