c#Forms Project:将信息传递给用户控件

时间:2011-11-07 15:35:50

标签: c# winforms user-controls

我创建了一个使用TabControl的表单应用程序。对于每个选项卡,我想放置一个UserControl(在同一个项目中创建),其中包含所有其他控件。但是,我需要将一些信息从主表单传递给UserControl,以使其与事件,方法等一起工作。如何/应该这样做?

我尝试使用参数创建构造函数但是Designer失败了,我必须进入并删除添加的UserControl引用。

谢谢!

3 个答案:

答案 0 :(得分:0)

构造函数参数是正确的方法。但是,必须仍然有一个默认构造函数,以便Designer能够构造(和绘制)对象的副本。

我通常的解决方法是在默认构造函数中放置一个子句,检查我们是否处于"设计模式"如果不是,则抛出异常:

public class MyForm: Form
{
   public MyForm()
   {
      if(!DesignMode) throw new InvalidOperationException("Cannot use default constructor in production code");
   }

   public MyForm(MyDependency dependent)
   {
      ...
   }
}

答案 1 :(得分:0)

您可以通过在usercontrol.cs文件中创建的函数传递信息。

例如在usercontrol.cs

public string name;
public void SetName(string pname)
{
this.name = pname;
} 

或者您可能想要更改按钮名称

Button mybutton = new Button();
public void SetButtonName(string btname)
{
this.mybutton.Text = btname;
}

现在您可以在mainform.cs中调用这些函数

Myusercontrol usc = new Myusercontrol();
usc.SetName("this is string for 'name' string");
usc.SetButtonName("this is string for button text");

答案 2 :(得分:0)

尝试创建构造函数,同时创建默认的无参数构造函数。

看看at this question