C# UserControl:在构造函数中使用自定义属性
我有这个问题: 我创建了一个自定义的C# UserControl:在构造函数中使用自定义属性,c#,winforms,visual-studio-2017,C#,Winforms,Visual Studio 2017,我有这个问题: 我创建了一个自定义的UserControl,并添加了以下属性: public string TestString { get; set; } 没关系,在属性中我可以编辑它: 现在问题来了:我需要在usercontrol的构造函数中读取这个属性:为了简单地测试它,我有以下代码: public ucnTest() { InitializeComponent(); MessageBox.Show(TestString); } 当我跑步时,我得到了这个: 似乎在构
UserControl
,并添加了以下属性:
public string TestString { get; set; }
没关系,在属性中我可以编辑它:
现在问题来了:我需要在usercontrol的构造函数中读取这个属性:为了简单地测试它,我有以下代码:
public ucnTest()
{
InitializeComponent();
MessageBox.Show(TestString);
}
当我跑步时,我得到了这个:
似乎在构造函数中还没有传递值。。。我怎样才能解决这个问题
PS:如果我将消息放在加载事件中,它会工作:
private void ucnTest_Load(object sender, EventArgs e)
{
MessageBox.Show(TestString);
}
为了了解发生了什么,我建议您研究表单构造函数(或添加UserControl的任何地方)的InitializeComponent()方法 您应该看到,在将在设计器中指定的值传递给控件之前,已调用UserControl的构造函数 如果确实需要访问构造函数中的值,则需要将其作为参数传递,如下所示:
public string TestString { get; set; }
public ucnTest(string myStringValue)
{
InitializeComponent();
TestString = myStringValue;
MessageBox.Show(TestString);
}
然后您需要在InitializeComponent()方法中将“YourString”
传递给构造函数
编辑:
将属性添加到代码
Load
事件中测试属性值。在窗体的设计器中设置UserControl的属性时,仅在初始化UC后设置。所以,你不会发现它已经在它的构造函数中设置了,但是当它被加载时。谢谢@cmos,但是我如何才能将属性传递给构造函数?谢谢,但是我如何才能调用构造函数?我需要更改Designer.cs中Designer.cs
下的代码。在Designer.cs中,应该有一行调用UserControl的基本构造函数。在这里你可以传递你的线。据我所知,如果您正在寻找,您将无法将其绑定到设计器中的属性。