Как изменить вертикальное пространство элемента CheckedListBox
Мне нужно изменить вертикальное пространство для CheckedListBox
элементы, чтобы они соответствовали текстовым полям на другой стороне:
http://i40.tinypic.com/358vt52.png Как это сделать?
Проведя некоторое исследование, я узнал, что CheckedListBox
наследуется ListBox
поэтому оно должно иметь свою публичную собственность ItemHeight
, но по какой-то причине это не
Я попробовал это:
ListBox l = CheckedList as ListBox;
l.ItemHeight = 30;
но это не сработало
2 ответа
Решение
Реализация по умолчанию свойства ItemHeight CheckedListBox:
public override int ItemHeight {
get {
// this should take FontHeight + buffer into Consideration.
return Font.Height + 2;
}
set {
}
}
Вы можете полностью переопределить это свойство в новом классе.
public sealed class MyListBox:CheckedListBox
{
public MyListBox()
{
ItemHeight = 30;
}
public override int ItemHeight { get; set; }
}
это должно позволить вам установить ваш собственный ItemHeight.
Это работает в VS2013 нетто FrameWork4.5 код VB
Поместите объявить и константу в верхней части класса
Использование помещает остаток кода в Form_Load, как в примере кода.
Private Declare Function SendMessageByNum Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As IntPtr, ByVal wMsg As UInt32, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
Private Const lB_SETITEMHEIGHT As Integer = &H1A0
Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim ItemHeight As Integer = Me.Font.Height + 4
SendMessageByNum(CheckedListBoxControl.Handle, lB_SETITEMHEIGHT, CType(0, IntPtr), CType(ItemHeight, IntPtr))
End Sub