4
我创建一个自定义listview
控制。我将它设置为每次添加新列时添加一个新按钮。
当我运行包含我的自定义控制程序,栏按钮得到妥善安置。但是,在设计时,当我添加或删除列时,控件不会更新添加的按钮。设计时重绘
它们在运行时确定,但在设计时,我需要关闭窗体并重新打开它(强制重新绘制),以更新栏按钮。
如何以编程方式强制重绘我的用户控件?
列属性看起来是这样的:
<MergableProperty(False)> _
<Editor("System.Windows.Forms.Design.ColumnHeaderCollectionEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", GetType(UITypeEditor))> _
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
<Localizable(True)> _
Public ReadOnly Property Columns() As ListView.ColumnHeaderCollection
Get
Return ListView1.Columns
End Get
End Property
我试图重新绘制这样的控制:
Me.Invalidate()
Dim x As New Rectangle With {.X = Me.Location.X, .Y = Me.Location.Y, .Size = Me.Size}
Me.NotifyInvalidate(x)
但由于某些原因,它不工作。在设计时,每次添加一列时,都不会添加相应的按钮。
代码工作的大部分。目前还不清楚按钮是否与列标题相同,我认为它是。我也猜测你的控件正在加载一个ListView控件,而不是从它继承。我在VS2012上测试过。 – LarsTech
是的,这是真的,我使用的是一个列表视图控件,我的控件只是添加一些自定义样式按钮作为该列表视图的标题..出于某些原因,他们不更新设计模式... – rusoaica
我建议你编辑你的文章的代码就如何显示这些按钮。 – LarsTech