0

複数の項目を持つ listBox があり、各項目の間に空白行があります。

item1

item2

item3

(その理由は、数十個のアイテムがあると、IMO の方が見栄えがするからです)。

ユーザーが空行を選択できないようにしたいので、試してみました

if (listBox1.SelectedItem.ToString() == "")
            listBox1.SelectedItems.Clear();

mouse_Down イベントで、しかし、私はこの醜いちらつき効果を得て、ユーザーが実際のアイテムを選択し、矢印キーを使用してスクロールすると、上記は機能しません。

EDIT listBox項目間の垂直方向の間隔を調整する方法はありますか? それが私がする必要があるすべてです(その後、空のスペースを削除できます)

4

1 に答える 1

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);                
            }
        }
于 2013-04-20T08:50:41.853 に答える