如何在ListBox的下拉区域添加边框?

时间:2011-08-23 16:22:34

标签: c# winforms graphics listbox

我使用以下代码覆盖并绘制ListBox中的每个列表项。

      if (e.Index < 0) return;
        // if the item state is selected then change the back color 
        if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            e = new DrawItemEventArgs(e.Graphics,
                                      e.Font,
                                      e.Bounds,
                                      e.Index,
                                      e.State ^ DrawItemState.Selected,
                                      e.ForeColor,
                                      Color.Red); // Choose the color

        // Draw the background of the ListBox control for each item.
        e.DrawBackground();
        // Draw the current item text
        e.Graphics.DrawString(studentsListBox.Items[e.Index].ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault);
        // If the ListBox has focus, draw a focus rectangle around the selected item.
        e.DrawFocusRectangle();

代码是我可以怀疑的,但是我还想在列表框的整个下拉部分添加一个边框(参见下面的示例图片。)如何将边框添加到整个列表中?

enter image description here

1 个答案:

答案 0 :(得分:2)

由于标题是指边界,我将专注于此。我假设您想要更改BorderStyle而不仅仅是给定的“None”,“FixedSingle”和“Fixed3D”?

ListBox不支持任何类型的BorderColors等。

您最好的办法是更改BorderStyle to "None"IntegralHeight = FalseDock = Fill的更改,然后将其放在面板中。

对于您的面板,请更改BorderStlye = NonePadding (All) = 2BackColor = Red

使用WinForms,您的选择是有限的。