.NET WinForm ComboBox - 如何更改DropDown行为

时间:2010-07-11 21:43:59

标签: c# .net winforms scroll drop-down-menu

我在ComboBox中有一个相当长的列表,我希望DropDown行为不同。

通常,当您单击箭头时,列表将展开显示所有选项,从选定选项开始。 所选选项上方列出的选项是隐藏的,但可以通过向上滚动来查看。

我希望列表向上滚动一下,尽可能在列表中间显示所选选项。

我已经看到在启用Scrollbar的FlowLayoutPanel中执行此操作的方法,但我对DDL没有运气。该列表超过50个项目,因此只显示整个列表是不切实际的。

1 个答案:

答案 0 :(得分:1)

在我看来,您可以使用自己的绘图项方法来实现效果。我的意思是,您将一个处理程序附加到DrawItem事件,然后在处理程序中,您将获得您希望显示的所有必需数据。之后,您将其绘制到屏幕上。

例如:

private void myComboBox_DrawItem(object sender, DrawItemEventArgs e)
        {
            if ( boundDataSource.Count > 0 && e.Index >= 0 )
            {
              if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
                {
                    //Get the data here
                    string dataToShow=  GetDataToShow()

                    e.DrawFocusRectangle();

                    System.Drawing.Graphics g = e.Graphics;
                    Rectangle r = e.Bounds;             


                    e.Graphics.FillRectangle(new SolidBrush(Color.Blue), r);
                    g.DrawStringdataToShow, e.Font, Brushes.White, r, stringFormat);
                    e.DrawFocusRectangle();
                    g.Dispose();
                }



            }
        }