簡體   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