123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Drawing;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace LYFZ.ComponentLibrary
- {
- public partial class ComboBoxTextEx : UserControl
- {
- public ComboBoxTextEx()
- {
- InitializeComponent();
- }
- #region 属性
- DataTable _Bindtable;
- /// <summary>
- /// 要绑定数据
- /// </summary>
- public DataTable Bindtable
- {
- get { return _Bindtable; }
- set
- {
- _Bindtable = value;
- int an = txtValue.Height;
- TextComboBoxExLoad();
- }
- }
- string _ShowName;
- /// <summary>
- /// 要显示的字段
- /// </summary>
- public string ShowName
- {
- get { return _ShowName; }
- set
- {
- _ShowName = value;
- TextComboBoxExLoad();
- }
- }
- string _Text;
- /// <summary>
- /// 选择后返回的值
- /// </summary>
- public override string Text
- {
- get { return _Text; }
- set { _Text = value; }
- }
- int _LstBoxHeiht;
- public int LstBoxHeiht
- {
- get { return _LstBoxHeiht; }
- set { _LstBoxHeiht = value; }
- }
- #endregion
-
- #region 属性重写
- [Category("控件扩展属性"), Description("设置控件中文本字体")]
- public new Font Font
- {
- get
- {
- return txtValue.Font;
- }
- set
- {
- txtValue.Font = value;
- lstboxData.Font = txtValue.Font;
- OnResize(null);
- Invalidate(false);
- }
- }
-
- /// <summary>
- /// 禁止调整大小
- /// </summary>
- /// <param name="e"></param>
- protected override void OnResize(EventArgs e)
- {
- if (lstboxData.Visible == true)
- {
- this.Height = txtValue.Height + lstboxData.Height;
- if (LstBoxHeiht > lstboxData.Font.Height)
- {
- lstboxData.Height = LstBoxHeiht;
- }
- }
- else
- {
- this.Height = txtValue.Height;
- btnOpenDrop.Width = this.Height;
- btnOpenDrop.Height = this.Height;
- btnOpenDrop.Location = new Point(this.Width - this.Height, 0);
- txtValue.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right;
- txtValue.Width = this.Width - btnOpenDrop.Width;
- this.Width = txtValue.Width + btnOpenDrop.Width;
- lstboxData.Height = lstboxData.Font.Height; ;
- lstboxData.Width = this.Width - 1;
- lstboxData.Location = new Point(0, txtValue.Height - 1);
- lstboxData.BorderStyle = BorderStyle.None;
- lstboxData.BackColor = Color.FromArgb(238, 238, 238);
- lstboxData.Visible = false;
- }
- }
- #endregion
-
- /// <summary>
- /// 窗体加载事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ComboBoxTextEx_Load(object sender, EventArgs e)
- {
- }
- /// <summary>
- /// 给列表画值
- /// </summary>
- private void TextComboBoxExLoad()
- {
- txtValue.Text = "";
- Text = "";
- lstboxData.Items.Clear();
- lstboxData.Items.Add("");
- LstBoxHeiht = lstboxData.Font.Height;
- if (Bindtable != null && ShowName != null && ShowName != "")
- {
- if (Bindtable.Rows.Count > 0)
- {
- for (int i = 0; i < Bindtable.Rows.Count; i++)
- {
- LstBoxHeiht += lstboxData.Font.Height;
- lstboxData.Items.Add(Bindtable.Rows[i][ShowName].ToString());
- }
- }
- }
- }
- /// <summary>
- /// 按钮的点击
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnOpenDrop_Click(object sender, EventArgs e)
- {
- if (lstboxData.Visible)
- {
- lstboxData.Visible = false;
- this.Height = btnOpenDrop.Height;
- }
- else
- {
- TextComboBoxExLoad();
- this.BringToFront();
- lstboxData.Visible = true;
- OnResize(null);
- }
- }
- /// <summary>
- /// 列表选择事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void lstboxData_SelectedIndexChanged(object sender, EventArgs e)
- {
- Text = lstboxData.Items[lstboxData.SelectedIndex].ToString();
- txtValue.Text = Text;
- lstboxData.Visible = false;
- this.Size = new Size(txtValue.Width + btnOpenDrop.Width, txtValue.Height);
- }
- private void lstboxData_Leave(object sender, EventArgs e)
- {
- txtValue_Leave(null, null);
- }
- private void txtValue_Leave(object sender, EventArgs e)
- {
- if (lstboxData.Visible == true)
- {
- lstboxData.Visible = false;
- this.Height = btnOpenDrop.Height;
- }
- }
- }
- }
|