单击按钮时,从主窗体向用户控件发送参数

时间:2014-06-02 13:37:11

标签: c# winforms user-controls

我的程序中有一个名为Campaign的对象。我有User Control将使用此对象的属性。 但是在我的程序开始时,此对象设置为null。仅当用户点击"下一步"我希望我的用户控件接收此对象的按钮。 但是在我的主要形式的InitializeComponent()方法中,我想要它之前生成一个新的用户控件实例。这个实例不带任何参数。

this.userControlFileCampaign1 = new Postbag.UserControlFileCampaign();

所以我想要做的是将此Campaign对象发送给我的用户控件的构造函数。但是在改变我的构造函数时,编译器会告诉我:

  

' Postbag.UserControlFileCampaign'不包含构造函数   取0个参数

有两个构造函数对我没用,因为它总是运行零参数的那个。

那么如何将此Campaign对象发送给我的用户控件?

2 个答案:

答案 0 :(得分:1)

创建一个带零参数的构造函数的重载,并简单地调用那个:

public UserControlFileCampaign()
    : this(null) { }

public UserControlFileCampaign(Campaign camp)
{
}

你将无法避免设计师的代码调用构造函数......它必须存在于表单上。如果您想稍后发送Campaign对象,只需在构建后的任何时候公开可用于执行此操作的属性或方法。

答案 1 :(得分:0)

清空UserControl's构造函数,并将代码移动到其他方法,例如SetCampaignAndStart()。将此新方法添加到UserControl

public void SetCompaignAndStart(Campaign campObject)
{
   // Move constructor code here,
   // where the campaign object is needed
}

当用户点击Next时,运行此usercontrol的方法以“启动”它:

private void Button1_Click(object sender, EventArgs e)
{
   myUserControl.SetCompaignAndStart(campaignObject);
}