CComboBox.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Controls.Properties;
  11. namespace Controls
  12. {
  13. public delegate void DSelectedIndexChanged();
  14. public partial class CComboBox : UserControl
  15. {
  16. public CComboBox()
  17. {
  18. InitializeComponent();
  19. cbx_item.Items.AddRange(Items);
  20. }
  21. /// <summary>
  22. /// 选中项改变事件
  23. /// </summary>
  24. public event DSelectedIndexChanged SelectedIndexChanged;
  25. /// <summary>
  26. /// 选中项索引
  27. /// </summary>
  28. private int _selectedIndex = -1;
  29. public int SelectedIndex
  30. {
  31. get { return _selectedIndex; }
  32. set
  33. {
  34. _selectedIndex = value;
  35. cbx_item.SelectedIndex = value;
  36. }
  37. }
  38. /// <summary>
  39. /// 文本
  40. /// </summary>
  41. private string _text = string.Empty;
  42. public string TextStr
  43. {
  44. get { return _text; }
  45. set
  46. {
  47. _text = value;
  48. cbx_item.Text = value;
  49. }
  50. }
  51. /// <summary>
  52. /// 是否可以编辑
  53. /// </summary>
  54. private bool _canEdit = false;
  55. public bool CanEdit
  56. {
  57. get { return _canEdit; }
  58. set
  59. {
  60. _canEdit = value;
  61. if (value)
  62. cbx_item.DropDownStyle = ComboBoxStyle.DropDown;
  63. else
  64. cbx_item.DropDownStyle = ComboBoxStyle.DropDownList;
  65. }
  66. }
  67. /// <summary>
  68. /// 项
  69. /// </summary>
  70. private string[] _items = new string[] { };
  71. public string[] Items
  72. {
  73. get { return _items; }
  74. set
  75. {
  76. _items = value;
  77. cbx_item.Items.Clear();
  78. cbx_item.Items.AddRange(value);
  79. }
  80. }
  81. /// <summary>
  82. /// 删除所有项
  83. /// </summary>
  84. public void Clear()
  85. {
  86. Items = new string[] { };
  87. cbx_item.Items.Clear();
  88. }
  89. /// <summary>
  90. /// 添加项
  91. /// </summary>
  92. /// <param name="item">项</param>
  93. public void Add(string item)
  94. {
  95. string[] items = new string[Items.Length + 1];
  96. for (int i = 0; i < Items.Length; i++)
  97. {
  98. items[i] = Items[i];
  99. }
  100. items[Items.Length] = item;
  101. Items = items;
  102. }
  103. private void cbx_item_SelectedIndexChanged(object sender, EventArgs e)
  104. {
  105. SelectedIndex = cbx_item.SelectedIndex;
  106. TextStr = cbx_item.Text;
  107. if (SelectedIndexChanged != null)
  108. SelectedIndexChanged();
  109. }
  110. private void ComboBox_Enter(object sender, EventArgs e)
  111. {
  112. lbl_line.Height = 2;
  113. lbl_line.BackColor = Color.FromArgb(18, 150, 219);
  114. btn_showItem.Image = Resources.BlueImage;
  115. }
  116. private void ComboBox_Leave(object sender, EventArgs e)
  117. {
  118. lbl_line.Height = 1;
  119. lbl_line.BackColor = Color.Gray;
  120. btn_showItem.Image = Resources.GrayImage;
  121. }
  122. private void btn_showItem_Click(object sender, EventArgs e)
  123. {
  124. cbx_item.DroppedDown = true;
  125. }
  126. }
  127. }