我的程序中有一个名为Campaign的对象。我有User Control
将使用此对象的属性。
但是在我的程序开始时,此对象设置为null
。仅当用户点击"下一步"我希望我的用户控件接收此对象的按钮。
但是在我的主要形式的InitializeComponent()
方法中,我想要它之前生成一个新的用户控件实例。这个实例不带任何参数。
this.userControlFileCampaign1 = new Postbag.UserControlFileCampaign();
所以我想要做的是将此Campaign对象发送给我的用户控件的构造函数。但是在改变我的构造函数时,编译器会告诉我:
' Postbag.UserControlFileCampaign'不包含构造函数 取0个参数
有两个构造函数对我没用,因为它总是运行零参数的那个。
那么如何将此Campaign对象发送给我的用户控件?
答案 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);
}