我有一个包含多个项目的listBox,每个项目之间都有一个空行,例如
item1
item2
item3
(原因是,有几十个项目,看起来IMO看起来好多了。)
我想这样做,所以用户无法选择任何空行,我试过
if (listBox1.SelectedItem.ToString() == "")
listBox1.SelectedItems.Clear();
在mouse_Down事件中,但是我得到了这种丑陋的闪烁效果,当用户选择实际项目并使用箭头键滚动时,上述操作无效。
修改 有没有办法调整listBox项之间的垂直间距?这就是我需要做的所有事情(然后我可以删除空格)
答案 0 :(得分:1)
您可以使用ListBox.ItemHeight属性来定义所有项目的行高。因此,您必须将DrawMode设置为OwnerDrawFixed或OwnerDrawVariable并处理DrawItem事件。
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if (listBox1.Items.Count > 0)
{
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
e.Graphics.FillRectangle(SystemBrushes.Highlight, e.Bounds);
else
e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds);
string text = listBox1.Items[e.Index].ToString();
e.Graphics.DrawString(text, e.Font, Brushes.Black, e.Bounds.Left, e.Bounds.Top);
}
}