繁体   English   中英

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

[英].NET WinForm ComboBox - How to alter the DropDown behavior

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

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

我希望列表向上滚动一点,尽可能显示列表中间的选定选项。

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

我认为,可以通过使用自己的工程图方法来达到效果。 我的意思是,您将一个处理程序附加到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();
                }



            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM