DropDownListBox.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using System;
  2. using System.Windows.Forms;
  3. using System.ComponentModel;
  4. using CustomControls.BaseClasses;
  5. using CustomControls.HelperClasses;
  6. namespace CustomControls.Win32Controls
  7. {
  8. public class DropDownListBox:DropDownListBase
  9. {
  10. public delegate void ItemSelectedEventHandler(object sender, ItemSelectedEventArgs e);
  11. [Category("Action")]
  12. public event ItemSelectedEventHandler ItemSelected;
  13. private ListBox _List= new ListBox();
  14. private int _MaxDropDawnItems=8;
  15. private int _MinListWidth=140;
  16. protected override System.Windows.Forms.Control HostedControl
  17. {
  18. get
  19. {
  20. return List;
  21. }
  22. }
  23. [Browsable(false)]
  24. [DefaultValue(typeof(Int32),"-1")]
  25. public int SelectedIndex
  26. {
  27. get{return List.SelectedIndex;}
  28. set
  29. {
  30. if(value!=List.SelectedIndex)
  31. {
  32. List.SelectedIndex=value;
  33. OnItemSelected(new ItemSelectedEventArgs(List.SelectedItem, List.SelectedIndex));
  34. }
  35. }
  36. }
  37. [Category("Behavior")]
  38. [DefaultValue(typeof(System.Int32),"140")]
  39. public int MinListWidth
  40. {
  41. get{return _MinListWidth;}
  42. set{_MinListWidth= value;}
  43. }
  44. [Browsable(false)]
  45. public virtual ListBox List
  46. {
  47. get{return _List;}
  48. }
  49. [Category("Behavior")]
  50. [DefaultValue(typeof(System.Int32),"8")]
  51. public int MaxDropDownItems
  52. {
  53. get{return _MaxDropDawnItems;}
  54. set{_MaxDropDawnItems=value;}
  55. }
  56. public DropDownListBox():base()
  57. {
  58. List.BorderStyle=System.Windows.Forms.BorderStyle.None;
  59. List.MouseUp+= new MouseEventHandler(List_MouseUp);
  60. }
  61. protected override void OnDropDown(System.EventArgs e)
  62. {
  63. if (Text!=string.Empty) {List.SelectedIndex=List.FindString(Text);}
  64. else{List.SelectedIndex=-1;}
  65. int lHeight,lWidth;
  66. lHeight=Math.Max(List.ItemHeight,Math.Min(MaxDropDownItems, List.Items.Count)*List.ItemHeight);
  67. lWidth=Math.Max(this.Width+20,_MinListWidth);
  68. dropDownForm.Size= new System.Drawing.Size(lWidth,lHeight+4);
  69. }
  70. private void List_MouseUp(object sender , MouseEventArgs e)
  71. {
  72. DroppedDown=false;
  73. OnItemSelected(new ItemSelectedEventArgs(List.SelectedItem, List.SelectedIndex));
  74. }
  75. protected override void OnNextItem()
  76. {
  77. if(List.SelectedIndex<List.Items.Count-1)
  78. {
  79. SelectedIndex+=1;
  80. }
  81. }
  82. protected override void OnPrevItem()
  83. {
  84. if(List.SelectedIndex>0)
  85. {
  86. SelectedIndex-=1;
  87. }
  88. }
  89. protected virtual void OnItemSelected(ItemSelectedEventArgs e)
  90. {
  91. Text=List.Text;
  92. editControl.SelectAll();
  93. if(ItemSelected!=null)
  94. {
  95. ItemSelected(this,e);
  96. }
  97. }
  98. }
  99. }