禁用在列表框中选择空行
本文关键字:选择 列表 | 更新日期: 2023-09-27 18:10:08
我有一个listBox,里面有几个项目,每个项目之间有一个空白行,例如
item1
item2
item3
(原因是,在我看来,有几十个项目看起来好多了)。
我想让它使用户不能选择任何空行,我试过
if (listBox1.SelectedItem.ToString() == "")
listBox1.SelectedItems.Clear();
在mouse_Down事件中,但是我得到了这个难看的闪烁效果,当用户选择一个实际的项目并使用箭头键滚动时,上面的方法不起作用。
编辑是否有一种方法来调整列表框项目之间的垂直间距?这就是我所需要做的(然后我可以删除空格)
您可以使用ListBox。属性来定义所有项目的行高。因此,你必须将DrawMode设置为OwnerDrawFixed或OwnerDrawVariable,并处理drawwitem事件。
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);
}
}