禁用在ListBox中选择空行

时间:2013-04-19 20:41:30

标签: c# listbox selecteditem

我有一个包含多个项目的listBox,每个项目之间都有一个空行,例如

item1

item2

item3

(原因是,有几十个项目,看起来IMO看起来好多了。)

我想这样做,所以用户无法选择任何空行,我试过

if (listBox1.SelectedItem.ToString() == "")
            listBox1.SelectedItems.Clear();
在mouse_Down事件中

,但是我得到了这种丑陋的闪烁效果,当用户选择实际项目并使用箭头键滚动时,上述操作无效。

修改 有没有办法调整listBox项之间的垂直间距?这就是我需要做的所有事情(然后我可以删除空格)

1 个答案:

答案 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);                
            }
        }