初始化控制';s的属性而不重新喷漆

本文关键字:属性 新喷漆 控制 初始化 | 更新日期: 2023-09-27 18:25:28

我正在创建一个控件,并添加一个属性(控件的外观取决于它)。如何设置此属性:

  1. 我不能在InitializeComponent()调用后立即在窗体构造函数中设置属性。在这种情况下,用户将看到表单初始化的两个帧:第一个帧在InitializeComponent()之后,第二个帧在属性设置之后,调用控件的重绘。令人不快的

  2. 此外,我不能用BrowsebleAttribute标记我的属性,因为属性的类型是我自己的类,不能在«属性窗口»中配置。А也很糟糕。

那么,如何初始化form1.SuspendLayout()form1.ResumeLayout(false)之间的属性呢?


理想情况下,我希望有可能直接在«属性窗口»的相应字段中编写代码。例如,若属性的类型是MyClass,我将编写new MyClass(param1, param2)

初始化控制';s的属性而不重新喷漆

不要在属性更改时强制控件重新绘制。当您初始化控件时,并且当用户更改属性时,它将在下一次绘制事件中重新绘制,这是不必要的。如果需要,用户可以在设置属性以手动强制重绘后,对控件调用.Refresh()。