Comment changer l’espace vertical de l’élément CheckedListBox

Je dois modifier l’espace vertical pour les éléments CheckedListBox afin qu’ils correspondent aux zones de texte de l’autre côté:

CheckedListBox et “TextBox” s côte à côte http://soffr.miximages.com/c%23/358vt52.png Comment faire cela?

Après quelques recherches, j’ai découvert que CheckedListBox hérite de ListBox . Il doit donc avoir sa propriété publique ItemHeight , mais pour une raison quelconque, cela ne fonctionne pas.

J’ai essayé ceci:

 ListBox l = CheckedList as ListBox; l.ItemHeight = 30; 

mais ça n’a pas marché

L’implémentation par défaut de la propriété ItemHeight de CheckedListBox est,

 public override int ItemHeight { get { // this should take FontHeight + buffer into Consideration. return Font.Height + 2; } set { } } 

vous pouvez clairement remplacer cette propriété dans une nouvelle classe.

 public sealed class MyListBox:CheckedListBox { public MyListBox() { ItemHeight = 30; } public override int ItemHeight { get; set; } } 

Cela devrait vous permettre de définir votre propre ItemHeight.

entrez la description de l'image ici

Cela fonctionne dans le code VS2013 net FrameWork4.5 est VB

Mettez declare et constant en haut de la classe

Utilisation mettre le rest du code dans Form_Load comme dans l’exemple de code.

 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