2013-05-16 7 views
4

Я создал пользовательское управление listview. Я установил его, чтобы добавить новую кнопку каждый раз, когда я добавляю новый столбец.
Когда я запускаю программу, содержащую мой пользовательский элемент управления, кнопки столбцов размещаются правильно. Однако во время разработки, когда я добавляю или удаляю столбцы, элемент управления не обновляет добавленные кнопки.Design-Time Redraw

Они в порядке во время выполнения, но во время разработки мне нужно закрыть форму и снова открыть ее (принудительно повторить), чтобы обновить кнопки столбца.
Как я могу программно принудительно выполнить перерисовку моего User Control?
Свойство Колонка выглядит следующим образом:

<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) 

Но по некоторым причинам, он не работает. Во время проектирования каждый раз, когда Ii добавляет столбец, соответствующая кнопка не добавляется.

+0

Код работает по большей части. Неясно, является ли кнопка той же самой, что и заголовок столбца, я предположил, что это так. Я также предположил, что ваш элемент управления загружает элемент управления ListView и не наследует его. Я тестировал VS2012. – LarsTech

+0

yes, thats true, я использую элемент управления listview, мой элемент управления просто добавляет некоторые пользовательские кнопки стиля в качестве заголовков этого списка. По некоторым причинам они не обновляются в режиме разработки ... – rusoaica

+0

Предлагаю вам отредактировать свой пост с помощью некоторых от того, как вы показываете эти кнопки. – LarsTech

ответ

1

Просто быстрая идея, возможно, не лучшее решение, но это не помешает попробовать, и я предполагаю, что он будет работать, даже если, как я сказал, это не лучший способ сделать это.

В Sub, который используется для добавления/удаление столбцов, добавьте следующее:

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

Это должно обеспечивать соблюдение неприятной вещь будет рисовать себя каждый раз, когда вы добавить/удалить.