(三十四)c#Winform自定义控件-下拉框

怎甘沉沦 提交于 2019-11-27 14:51:28

前提

入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。

开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control

如果觉得写的还行,请点个 star 支持一下吧

欢迎前来交流探讨: 企鹅群568015492 

准备工作

此控件用到了停靠窗体和日期控件的一个面板,以及基类控件,如果你还对此不了解,请移步

(一)c#Winform自定义控件-基类控件

(十九)c#Winform自定义控件-停靠窗体

(三十三)c#Winform自定义控件-日期控件

开始

添加一个用户控件,命名UCComboBox,继承自UCControlBase

属性

  1 Color _ForeColor = Color.FromArgb(64, 64, 64);    2         [Description("文字颜色"), Category("自定义")]    3         public override Color ForeColor    4         {    5             get    6             {    7                 return _ForeColor;    8             }    9             set   10             {   11                 _ForeColor = value;   12                 lblInput.ForeColor = value;   13                 txtInput.ForeColor = value;   14             }   15         }   16    17         public event EventHandler SelectedChangedEvent;   18         public event EventHandler TextChangedEvent;   19    20         private ComboBoxStyle _BoxStyle = ComboBoxStyle.DropDown;   21    22         [Description("控件样式"), Category("自定义")]   23         public ComboBoxStyle BoxStyle   24         {   25             get { return _BoxStyle; }   26             set   27             {   28                 _BoxStyle = value;   29                 if (value == ComboBoxStyle.DropDownList)   30                 {   31                     lblInput.Visible = true;   32                     txtInput.Visible = false;   33                 }   34                 else   35                 {   36                     lblInput.Visible = false;   37                     txtInput.Visible = true;   38                 }   39    40                 if (this._BoxStyle == ComboBoxStyle.DropDownList)   41                 {   42                     txtInput.BackColor = _BackColor;   43                     base.FillColor = _BackColor;   44                     base.RectColor = _BackColor;   45                 }   46                 else   47                 {   48                     txtInput.BackColor = Color.White;   49                     base.FillColor = Color.White;   50                     base.RectColor = Color.FromArgb(220, 220, 220);   51                 }   52             }   53         }   54    55         private Font _Font = new Font("微软雅黑", 12);   56         [Description("字体"), Category("自定义")]   57         public new Font Font   58         {   59             get { return _Font; }   60             set   61             {   62                 _Font = value;   63                 lblInput.Font = value;   64                 txtInput.Font = value;   65                 txtInput.PromptFont = value;   66                 this.txtInput.Location = new Point(this.txtInput.Location.X, (this.Height - txtInput.Height) / 2);   67                 this.lblInput.Location = new Point(this.lblInput.Location.X, (this.Height - lblInput.Height) / 2);   68             }   69         }   70    71    72         [Obsolete("不再可用的属性")]   73         [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]   74         private new Color FillColor   75         {   76             get;   77             set;   78         }   79    80         [Obsolete("不再可用的属性")]   81         [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]   82         private new Color RectColor   83         {   84             get;   85             set;   86         }   87    88         private string _TextValue;   89    90         public string TextValue   91         {   92             get { return _TextValue; }   93             set   94             {   95                 _TextValue = value;   96                 if (lblInput.Text != value)   97                     lblInput.Text = value;   98                 if (txtInput.Text != value)   99                     txtInput.Text = value;  100             }  101         }  102   103         private List<KeyValuePair<string, string>> _source = null;  104   105         public List<KeyValuePair<string, string>> Source  106         {  107             get { return _source; }  108             set  109             {  110                 _source = value;  111                 _selectedIndex = -1;  112                 _selectedValue = "";  113                 _selectedItem = new KeyValuePair<string, string>();  114                 _selectedText = "";  115                 lblInput.Text = "";  116                 txtInput.Text = "";  117             }  118         }  119   120         private KeyValuePair<string, string> _selectedItem = new KeyValuePair<string, string>();  121   122         private int _selectedIndex = -1;  123   124         public int SelectedIndex  125         {  126             get  127             {  128                 return _selectedIndex;  129             }  130             set  131             {  132                 if (value < 0 || _source == null || _source.Count <= 0 || value >= _source.Count)  133                 {  134                     _selectedIndex = -1;  135                     _selectedValue = "";  136                     _selectedItem = new KeyValuePair<string, string>();  137                     SelectedText = "";  138                 }  139                 else  140                 {  141                     _selectedIndex = value;  142                     _selectedItem = _source[value];  143                     _selectedValue = _source[value].Key;  144                     SelectedText = _source[value].Value;  145                 }  146             }  147         }  148   149         private string _selectedValue = "";  150   151         public string SelectedValue  152         {  153             get  154             {  155                 return _selectedValue;  156             }  157             set  158             {  159                 if (_source == null || _source.Count <= 0)  160                 {  161                     SelectedText = "";  162                     _selectedValue = "";  163                     _selectedIndex = -1;  164                     _selectedItem = new KeyValuePair<string, string>();  165                 }  166                 else  167                 {  168                     for (int i = 0; i < _source.Count; i++)  169                     {  170                         if (_source[i].Key == value)  171                         {  172                             _selectedValue = value;  173                             _selectedIndex = i;  174                             _selectedItem = _source[i];  175                             SelectedText = _source[i].Value;  176                             return;  177                         }  178                     }  179                     _selectedValue = "";  180                     _selectedIndex = -1;  181                     _selectedItem = new KeyValuePair<string, string>();  182                     SelectedText = "";  183                 }  184             }  185         }  186   187         private string _selectedText = "";  188   189         public string SelectedText  190         {  191             get { return _selectedText; }  192             private set  193             {  194                 _selectedText = value;  195                 lblInput.Text = _selectedText;  196                 txtInput.Text = _selectedText;  197                 if (SelectedChangedEvent != null)  198                 {  199                     SelectedChangedEvent(this, null);  200                 }  201             }  202         }  203   204         private int _ItemWidth = 70;  205   206         public int ItemWidth  207         {  208             get { return _ItemWidth; }  209             set { _ItemWidth = value; }  210         }  211   212         private int _dropPanelHeight = -1;  213   214         public int DropPanelHeight  215         {  216             get { return _dropPanelHeight; }  217             set { _dropPanelHeight = value; }  218         }  219         [Obsolete("不再可用的属性,如需要改变背景色,请使用BackColorExt")]  220         [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]  221         private new Color BackColor  222         {  223             get  224             {  225                 return base.BackColor;  226             }  227             set  228             {  229                 base.BackColor = Color.Transparent;  230             }  231         }  232   233         private Color _BackColor = Color.FromArgb(240, 240, 240);  234   235         public Color BackColorExt  236         {  237             get  238             {  239                 return _BackColor;  240             }  241             set  242             {  243                 if (value == Color.Transparent)  244                     return;  245                 _BackColor = value;  246                 lblInput.BackColor = value;  247   248                 if (this._BoxStyle == ComboBoxStyle.DropDownList)  249                 {  250                     txtInput.BackColor = value;  251                     base.FillColor = value;  252                     base.RectColor = value;  253                 }  254                 else  255                 {  256                     txtInput.BackColor = Color.White;  257                     base.FillColor = Color.White;  258                     base.RectColor = Color.FromArgb(220, 220, 220);  259                 }  260             }  261         }

构造函数初始化处理

 1  public UCComboBox()   2         {   3             InitializeComponent();   4             lblInput.BackColor = _BackColor;   5             if (this._BoxStyle == ComboBoxStyle.DropDownList)   6             {   7                 txtInput.BackColor = _BackColor;   8                 base.FillColor = _BackColor;   9                 base.RectColor = _BackColor;  10             }  11             else  12             {  13                 txtInput.BackColor = Color.White;  14                 base.FillColor = Color.White;  15                 base.RectColor = Color.FromArgb(220, 220, 220);  16             }  17             base.BackColor = Color.Transparent;  18         }

一些事件处理

 1 private void UCComboBox_SizeChanged(object sender, EventArgs e)   2         {   3             this.txtInput.Location = new Point(this.txtInput.Location.X, (this.Height - txtInput.Height) / 2);   4             this.lblInput.Location = new Point(this.lblInput.Location.X, (this.Height - lblInput.Height) / 2);   5         }   6    7         private void txtInput_TextChanged(object sender, EventArgs e)   8         {   9             TextValue = txtInput.Text;  10             if (TextChangedEvent != null)  11             {  12                 TextChangedEvent(this, null);  13             }  14         }  15   16         private void click_MouseDown(object sender, MouseEventArgs e)  17         {  18             if (_frmAnchor == null || _frmAnchor.IsDisposed || _frmAnchor.Visible == false)  19             {  20   21                 if (this.Source != null && this.Source.Count > 0)  22                 {  23                     int intRow = 0;  24                     int intCom = 1;  25                     var p = this.PointToScreen(this.Location);  26                     while (true)  27                     {  28                         int intScreenHeight = Screen.PrimaryScreen.Bounds.Height;  29                         if ((p.Y + this.Height + this.Source.Count / intCom * 50 < intScreenHeight || p.Y - this.Source.Count / intCom * 50 > 0)  30                             && (_dropPanelHeight <= 0 ? true : (this.Source.Count / intCom * 50 <= _dropPanelHeight)))  31                         {  32                             intRow = this.Source.Count / intCom + (this.Source.Count % intCom != 0 ? 1 : 0);  33                             break;  34                         }  35                         intCom++;  36                     }  37                     UCTimePanel ucTime = new UCTimePanel();  38                     ucTime.IsShowBorder = true;  39                     int intWidth = this.Width / intCom;  40                     if (intWidth < _ItemWidth)  41                         intWidth = _ItemWidth;  42                     Size size = new Size(intCom * intWidth, intRow * 50);  43                     ucTime.Size = size;  44                     ucTime.FirstEvent = true;  45                     ucTime.SelectSourceEvent += ucTime_SelectSourceEvent;  46                     ucTime.Row = intRow;  47                     ucTime.Column = intCom;  48                     List<KeyValuePair<string, string>> lst = new List<KeyValuePair<string, string>>();  49                     foreach (var item in this.Source)  50                     {  51                         lst.Add(new KeyValuePair<string, string>(item.Key, item.Value));  52                     }  53                     ucTime.Source = lst;  54   55                     ucTime.SetSelect(_selectedValue);  56   57                     _frmAnchor = new Forms.FrmAnchor(this, ucTime);  58                     _frmAnchor.Load += (a, b) => { (a as Form).Size = size; };  59   60                     _frmAnchor.Show(this.FindForm());  61   62                 }  63             }  64             else  65             {  66                 _frmAnchor.Close();  67             }  68         }  69   70   71         Forms.FrmAnchor _frmAnchor;  72         void ucTime_SelectSourceEvent(object sender, EventArgs e)  73         {  74             if (_frmAnchor != null && !_frmAnchor.IsDisposed && _frmAnchor.Visible)  75             {  76                 SelectedValue = sender.ToString();  77                 _frmAnchor.Close();  78             }  79         }  80   81         private void UCComboBox_Load(object sender, EventArgs e)  82         {  83             if (this._BoxStyle == ComboBoxStyle.DropDownList)  84             {  85                 txtInput.BackColor = _BackColor;  86                 base.FillColor = _BackColor;  87                 base.RectColor = _BackColor;  88             }  89             else  90             {  91                 txtInput.BackColor = Color.White;  92                 base.FillColor = Color.White;  93                 base.RectColor = Color.FromArgb(220, 220, 220);  94             }  95   96             //if (this.Parent != null && BackColor == Color.Transparent)  97         }  98     }  99 }

完整代码如下

  1 // 版权所有  黄正辉  交流群:568015492   QQ:623128629    2 // 文件名称:UCComboBox.cs    3 // 创建日期:2019-08-15 15:58:51    4 // 功能描述:ComboBox    5 // 项目地址:https://gitee.com/kwwwvagaa/net_winform_custom_control    6 using System;    7 using System.Collections.Generic;    8 using System.ComponentModel;    9 using System.Drawing;   10 using System.Data;   11 using System.Linq;   12 using System.Text;   13 using System.Windows.Forms;   14    15 namespace HZH_Controls.Controls   16 {   17     [DefaultEvent("SelectedChangedEvent")]   18     public partial class UCComboBox : UCControlBase   19     {   20         Color _ForeColor = Color.FromArgb(64, 64, 64);   21         [Description("文字颜色"), Category("自定义")]   22         public override Color ForeColor   23         {   24             get   25             {   26                 return _ForeColor;   27             }   28             set   29             {   30                 _ForeColor = value;   31                 lblInput.ForeColor = value;   32                 txtInput.ForeColor = value;   33             }   34         }   35    36         public event EventHandler SelectedChangedEvent;   37         public event EventHandler TextChangedEvent;   38    39         private ComboBoxStyle _BoxStyle = ComboBoxStyle.DropDown;   40    41         [Description("控件样式"), Category("自定义")]   42         public ComboBoxStyle BoxStyle   43         {   44             get { return _BoxStyle; }   45             set   46             {   47                 _BoxStyle = value;   48                 if (value == ComboBoxStyle.DropDownList)   49                 {   50                     lblInput.Visible = true;   51                     txtInput.Visible = false;   52                 }   53                 else   54                 {   55                     lblInput.Visible = false;   56                     txtInput.Visible = true;   57                 }   58    59                 if (this._BoxStyle == ComboBoxStyle.DropDownList)   60                 {   61                     txtInput.BackColor = _BackColor;   62                     base.FillColor = _BackColor;   63                     base.RectColor = _BackColor;   64                 }   65                 else   66                 {   67                     txtInput.BackColor = Color.White;   68                     base.FillColor = Color.White;   69                     base.RectColor = Color.FromArgb(220, 220, 220);   70                 }   71             }   72         }   73    74         private Font _Font = new Font("微软雅黑", 12);   75         [Description("字体"), Category("自定义")]   76         public new Font Font   77         {   78             get { return _Font; }   79             set   80             {   81                 _Font = value;   82                 lblInput.Font = value;   83                 txtInput.Font = value;   84                 txtInput.PromptFont = value;   85                 this.txtInput.Location = new Point(this.txtInput.Location.X, (this.Height - txtInput.Height) / 2);   86                 this.lblInput.Location = new Point(this.lblInput.Location.X, (this.Height - lblInput.Height) / 2);   87             }   88         }   89    90    91         [Obsolete("不再可用的属性")]   92         [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]   93         private new Color FillColor   94         {   95             get;   96             set;   97         }   98    99         [Obsolete("不再可用的属性")]  100         [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]  101         private new Color RectColor  102         {  103             get;  104             set;  105         }  106   107         private string _TextValue;  108   109         public string TextValue  110         {  111             get { return _TextValue; }  112             set  113             {  114                 _TextValue = value;  115                 if (lblInput.Text != value)  116                     lblInput.Text = value;  117                 if (txtInput.Text != value)  118                     txtInput.Text = value;  119             }  120         }  121   122         private List<KeyValuePair<string, string>> _source = null;  123   124         public List<KeyValuePair<string, string>> Source  125         {  126             get { return _source; }  127             set  128             {  129                 _source = value;  130                 _selectedIndex = -1;  131                 _selectedValue = "";  132                 _selectedItem = new KeyValuePair<string, string>();  133                 _selectedText = "";  134                 lblInput.Text = "";  135                 txtInput.Text = "";  136             }  137         }  138   139         private KeyValuePair<string, string> _selectedItem = new KeyValuePair<string, string>();  140   141         private int _selectedIndex = -1;  142   143         public int SelectedIndex  144         {  145             get  146             {  147                 return _selectedIndex;  148             }  149             set  150             {  151                 if (value < 0 || _source == null || _source.Count <= 0 || value >= _source.Count)  152                 {  153                     _selectedIndex = -1;  154                     _selectedValue = "";  155                     _selectedItem = new KeyValuePair<string, string>();  156                     SelectedText = "";  157                 }  158                 else  159                 {  160                     _selectedIndex = value;  161                     _selectedItem = _source[value];  162                     _selectedValue = _source[value].Key;  163                     SelectedText = _source[value].Value;  164                 }  165             }  166         }  167   168         private string _selectedValue = "";  169   170         public string SelectedValue  171         {  172             get  173             {  174                 return _selectedValue;  175             }  176             set  177             {  178                 if (_source == null || _source.Count <= 0)  179                 {  180                     SelectedText = "";  181                     _selectedValue = "";  182                     _selectedIndex = -1;  183                     _selectedItem = new KeyValuePair<string, string>();  184                 }  185                 else  186                 {  187                     for (int i = 0; i < _source.Count; i++)  188                     {  189                         if (_source[i].Key == value)  190                         {  191                             _selectedValue = value;  192                             _selectedIndex = i;  193                             _selectedItem = _source[i];  194                             SelectedText = _source[i].Value;  195                             return;  196                         }  197                     }  198                     _selectedValue = "";  199                     _selectedIndex = -1;  200                     _selectedItem = new KeyValuePair<string, string>();  201                     SelectedText = "";  202                 }  203             }  204         }  205   206         private string _selectedText = "";  207   208         public string SelectedText  209         {  210             get { return _selectedText; }  211             private set  212             {  213                 _selectedText = value;  214                 lblInput.Text = _selectedText;  215                 txtInput.Text = _selectedText;  216                 if (SelectedChangedEvent != null)  217                 {  218                     SelectedChangedEvent(this, null);  219                 }  220             }  221         }  222   223         private int _ItemWidth = 70;  224   225         public int ItemWidth  226         {  227             get { return _ItemWidth; }  228             set { _ItemWidth = value; }  229         }  230   231         private int _dropPanelHeight = -1;  232   233         public int DropPanelHeight  234         {  235             get { return _dropPanelHeight; }  236             set { _dropPanelHeight = value; }  237         }  238         [Obsolete("不再可用的属性,如需要改变背景色,请使用BackColorExt")]  239         [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]  240         private new Color BackColor  241         {  242             get  243             {  244                 return base.BackColor;  245             }  246             set  247             {  248                 base.BackColor = Color.Transparent;  249             }  250         }  251   252         private Color _BackColor = Color.FromArgb(240, 240, 240);  253   254         public Color BackColorExt  255         {  256             get  257             {  258                 return _BackColor;  259             }  260             set  261             {  262                 if (value == Color.Transparent)  263                     return;  264                 _BackColor = value;  265                 lblInput.BackColor = value;  266   267                 if (this._BoxStyle == ComboBoxStyle.DropDownList)  268                 {  269                     txtInput.BackColor = value;  270                     base.FillColor = value;  271                     base.RectColor = value;  272                 }  273                 else  274                 {  275                     txtInput.BackColor = Color.White;  276                     base.FillColor = Color.White;  277                     base.RectColor = Color.FromArgb(220, 220, 220);  278                 }  279             }  280         }  281   282         public UCComboBox()  283         {  284             InitializeComponent();  285             lblInput.BackColor = _BackColor;  286             if (this._BoxStyle == ComboBoxStyle.DropDownList)  287             {  288                 txtInput.BackColor = _BackColor;  289                 base.FillColor = _BackColor;  290                 base.RectColor = _BackColor;  291             }  292             else  293             {  294                 txtInput.BackColor = Color.White;  295                 base.FillColor = Color.White;  296                 base.RectColor = Color.FromArgb(220, 220, 220);  297             }  298             base.BackColor = Color.Transparent;  299         }  300   301         private void UCComboBox_SizeChanged(object sender, EventArgs e)  302         {  303             this.txtInput.Location = new Point(this.txtInput.Location.X, (this.Height - txtInput.Height) / 2);  304             this.lblInput.Location = new Point(this.lblInput.Location.X, (this.Height - lblInput.Height) / 2);  305         }  306   307         private void txtInput_TextChanged(object sender, EventArgs e)  308         {  309             TextValue = txtInput.Text;  310             if (TextChangedEvent != null)  311             {  312                 TextChangedEvent(this, null);  313             }  314         }  315   316         private void click_MouseDown(object sender, MouseEventArgs e)  317         {  318             if (_frmAnchor == null || _frmAnchor.IsDisposed || _frmAnchor.Visible == false)  319             {  320   321                 if (this.Source != null && this.Source.Count > 0)  322                 {  323                     int intRow = 0;  324                     int intCom = 1;  325                     var p = this.PointToScreen(this.Location);  326                     while (true)  327                     {  328                         int intScreenHeight = Screen.PrimaryScreen.Bounds.Height;  329                         if ((p.Y + this.Height + this.Source.Count / intCom * 50 < intScreenHeight || p.Y - this.Source.Count / intCom * 50 > 0)  330                             && (_dropPanelHeight <= 0 ? true : (this.Source.Count / intCom * 50 <= _dropPanelHeight)))  331                         {  332                             intRow = this.Source.Count / intCom + (this.Source.Count % intCom != 0 ? 1 : 0);  333                             break;  334                         }  335                         intCom++;  336                     }  337                     UCTimePanel ucTime = new UCTimePanel();  338                     ucTime.IsShowBorder = true;  339                     int intWidth = this.Width / intCom;  340                     if (intWidth < _ItemWidth)  341                         intWidth = _ItemWidth;  342                     Size size = new Size(intCom * intWidth, intRow * 50);  343                     ucTime.Size = size;  344                     ucTime.FirstEvent = true;  345                     ucTime.SelectSourceEvent += ucTime_SelectSourceEvent;  346                     ucTime.Row = intRow;  347                     ucTime.Column = intCom;  348                     List<KeyValuePair<string, string>> lst = new List<KeyValuePair<string, string>>();  349                     foreach (var item in this.Source)  350                     {  351                         lst.Add(new KeyValuePair<string, string>(item.Key, item.Value));  352                     }  353                     ucTime.Source = lst;  354   355                     ucTime.SetSelect(_selectedValue);  356   357                     _frmAnchor = new Forms.FrmAnchor(this, ucTime);  358                     _frmAnchor.Load += (a, b) => { (a as Form).Size = size; };  359   360                     _frmAnchor.Show(this.FindForm());  361   362                 }  363             }  364             else  365             {  366                 _frmAnchor.Close();  367             }  368         }  369   370   371         Forms.FrmAnchor _frmAnchor;  372         void ucTime_SelectSourceEvent(object sender, EventArgs e)  373         {  374             if (_frmAnchor != null && !_frmAnchor.IsDisposed && _frmAnchor.Visible)  375             {  376                 SelectedValue = sender.ToString();  377                 _frmAnchor.Close();  378             }  379         }  380   381         private void UCComboBox_Load(object sender, EventArgs e)  382         {  383             if (this._BoxStyle == ComboBoxStyle.DropDownList)  384             {  385                 txtInput.BackColor = _BackColor;  386                 base.FillColor = _BackColor;  387                 base.RectColor = _BackColor;  388             }  389             else  390             {  391                 txtInput.BackColor = Color.White;  392                 base.FillColor = Color.White;  393                 base.RectColor = Color.FromArgb(220, 220, 220);  394             }  395         }  396     }  397 }
View Code
  1 namespace HZH_Controls.Controls    2 {    3     partial class UCComboBox    4     {    5         /// <summary>     6         /// 必需的设计器变量。    7         /// </summary>    8         private System.ComponentModel.IContainer components = null;    9    10         /// <summary>    11         /// 清理所有正在使用的资源。   12         /// </summary>   13         /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>   14         protected override void Dispose(bool disposing)   15         {   16             if (disposing && (components != null))   17             {   18                 components.Dispose();   19             }   20             base.Dispose(disposing);   21         }   22    23         #region 组件设计器生成的代码   24    25         /// <summary>    26         /// 设计器支持所需的方法 - 不要   27         /// 使用代码编辑器修改此方法的内容。   28         /// </summary>   29         private void InitializeComponent()   30         {   31             this.panel1 = new System.Windows.Forms.Panel();   32             this.txtInput = new HZH_Controls.Controls.TextBoxEx();   33             this.lblInput = new System.Windows.Forms.Label();   34             this.SuspendLayout();   35             //    36             // panel1   37             //    38             this.panel1.BackColor = System.Drawing.Color.Transparent;   39             this.panel1.BackgroundImage = global::HZH_Controls.Properties.Resources.ComboBox;   40             this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;   41             this.panel1.Dock = System.Windows.Forms.DockStyle.Right;   42             this.panel1.Location = new System.Drawing.Point(136, 0);   43             this.panel1.Name = "panel1";   44             this.panel1.Size = new System.Drawing.Size(37, 32);   45             this.panel1.TabIndex = 0;   46             this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.click_MouseDown);   47             //    48             // txtInput   49             //    50             this.txtInput.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));   51             this.txtInput.BackColor = System.Drawing.Color.White;   52             this.txtInput.BorderStyle = System.Windows.Forms.BorderStyle.None;   53             this.txtInput.DecLength = 2;   54             this.txtInput.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);   55             this.txtInput.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));   56             this.txtInput.InputType = TextInputType.NotControl;   57             this.txtInput.Location = new System.Drawing.Point(3, 4);   58             this.txtInput.Margin = new System.Windows.Forms.Padding(3, 3, 10, 3);   59             this.txtInput.MaxValue = new decimal(new int[] {   60             1000000,   61             0,   62             0,   63             0});   64             this.txtInput.MinValue = new decimal(new int[] {   65             1000000,   66             0,   67             0,   68             -2147483648});   69             this.txtInput.MyRectangle = new System.Drawing.Rectangle(0, 0, 0, 0);   70             this.txtInput.Name = "txtInput";   71             this.txtInput.OldText = null;   72             this.txtInput.PromptColor = System.Drawing.Color.Silver;   73             this.txtInput.PromptFont = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);   74             this.txtInput.PromptText = "";   75             this.txtInput.RegexPattern = "";   76             this.txtInput.Size = new System.Drawing.Size(133, 24);   77             this.txtInput.TabIndex = 1;   78             this.txtInput.TextChanged += new System.EventHandler(this.txtInput_TextChanged);   79             //    80             // lblInput   81             //    82             this.lblInput.AutoSize = true;   83             this.lblInput.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));   84             this.lblInput.Location = new System.Drawing.Point(3, 6);   85             this.lblInput.Name = "lblInput";   86             this.lblInput.Size = new System.Drawing.Size(0, 20);   87             this.lblInput.TabIndex = 2;   88             this.lblInput.Visible = false;   89             this.lblInput.MouseDown += new System.Windows.Forms.MouseEventHandler(this.click_MouseDown);   90             //    91             // UCComboBox   92             //    93             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;   94             this.BackColor = System.Drawing.Color.Transparent;   95             this.ConerRadius = 5;   96             this.Controls.Add(this.panel1);   97             this.Controls.Add(this.txtInput);   98             this.Controls.Add(this.lblInput);   99             this.FillColor = System.Drawing.Color.Gainsboro;  100             this.IsShowRect = true;  101             this.Name = "UCComboBox";  102             this.Size = new System.Drawing.Size(173, 32);  103             this.Load += new System.EventHandler(this.UCComboBox_Load);  104             this.SizeChanged += new System.EventHandler(this.UCComboBox_SizeChanged);  105             this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.click_MouseDown);  106             this.ResumeLayout(false);  107             this.PerformLayout();  108   109         }  110   111         #endregion  112   113         private System.Windows.Forms.Panel panel1;  114         public TextBoxEx txtInput;  115         private System.Windows.Forms.Label lblInput;  116     }  117 }
View Code

用处及效果

最后的话

如果你喜欢的话,请到 https://gitee.com/kwwwvagaa/net_winform_custom_control 点个星 星吧

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!