2013-05-16 2 views
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) 

그러나 어떤 이유로

, 그것이 작동하지 않습니다. 디자인 타임에 열을 추가 할 때마다 해당 단추가 추가되지 않습니다.

+0

코드는 대부분 작동합니다. 버튼이 열 머리글과 동일한 것인지 확실하지 않습니다. 나는 또한 귀하의 컨트롤 ListView 컨트롤을로드하고 그것으로부터 상속하지 추측했다. VS2012에서 테스트했습니다. – LarsTech

+0

네, 그게 사실 사실, 내가 listview 컨트롤을 사용하여, 내 컨트롤은 그 목록보기의 헤더로 몇 가지 사용자 정의 스타일 버튼을 추가 .. 몇 가지 이유로, 그들은 디자인 모드에서 업데이 트되지 않습니다 ... – rusoaica

+0

나는 이 코드를 표시하는 방법에 대한 코드 – LarsTech

답변

1

가장 좋은 해결책은 아닐지 모르지만 시도 할 때 해를 입히지 않고 내가 말했듯이 그렇게하는 것이 최선의 방법은 아닐지라도 그것이 작동 할 것이라고 생각합니다. 당신은 추가에 사용하는 하위에서

/다음을 추가, 열을 제거 불쾌한 것은 당신이 추가/제거를 매번 자신을 그리는 것입니다 강제해야한다

Dim Graphics As Graphics = [yourform].CreateGraphics 
Dim ParamArg As New PaintEventArgs(Graphics, [yourform].ClientRectangle) 
InvokePaint(Me, ParamArgs) 

합니다.