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