Winforms 在Windows.Forms控件中以编程方式设置设计时属性
是否有一种简单的方法可以通过编程方式在控件上设置属性值,以便在设计器生成的代码中持久化该属性值 我想象控件构造函数或加载事件中的一段代码,当我在设计模式下打开控件时执行,但设置一个属性,使其以与通过属性网格手动更改值相同的方式持久化Winforms 在Windows.Forms控件中以编程方式设置设计时属性,winforms,Winforms,是否有一种简单的方法可以通过编程方式在控件上设置属性值,以便在设计器生成的代码中持久化该属性值 我想象控件构造函数或加载事件中的一段代码,当我在设计模式下打开控件时执行,但设置一个属性,使其以与通过属性网格手动更改值相同的方式持久化 编辑:是的,这与手动编辑设计器代码相同,但我希望以编程方式进行编辑。您是否考虑类似于: if (this.DesignMode) { // do somthing } 如果您将其放入构造函数中,请记住在之前调用InitializeComponent()。假
编辑:是的,这与手动编辑设计器代码相同,但我希望以编程方式进行编辑。您是否考虑类似于:
if (this.DesignMode)
{
// do somthing
}
如果您将其放入构造函数中,请记住在之前调用InitializeComponent()。假设我理解这个问题
您可以使用VisualStudioGUI将该属性数据绑定到设置。检查该控件的属性,在
(应用程序设置)
,(属性绑定)
的数据
部分下,它取决于您想要的功能类型。如果在将控件添加到窗体时只需要设置属性,那么在控件的构造函数中设置属性就可以完美地工作。但是,使用“属性”面板所做的更改将优先,并且在控件的构造函数中设置属性不一定会影响控件的现有实例
如果希望能够在一个位置更改控件实例的属性,请在(应用程序设置),(属性绑定)中指定绑定。然后可以从Settings.Settings文件修改所有绑定。不过,这仍然需要为控件的每个实例分配属性绑定
现在是最后一集。如果您想在控件的类中设置影响控件所有实例的属性,无论实例是否尚未创建或已经存在,您必须有一点创造性。我找到了解决办法,但可能不是最好的。我的解决方案如下:
在控件的构造函数中,对于要设置的每个属性,您可以:
Private Function GetPropertyByName(ByVal propName As String) _
As PropertyDescriptor
Dim prop As PropertyDescriptor
prop = TypeDescriptor.GetProperties(l_dWindow)(propName)
If prop Is Nothing Then
Throw New ArgumentException( _
"Matching ColorLabel property not found!", propName)
Else
Return prop
End If
End Function
Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
GetPropertyByName("AnyPublicProperty").SetValue(AnyControl, "AnyStringVALUE")
Me.DialogResult = DialogResult.OK
End Sub
你不能编辑设计器文件吗?你的意思是当你重新运行程序时它会再次被更改吗?