1.TextBoxDropDown 这是一个绝对TMD坑爹的狗屁玩意儿。键盘的四个事件全部不好使。但是这个玩意儿有个好处就是他的DropDownControl属性可以用来制作ComboGrid。
然后就是所有控件通用的输入提示功能,需要设置这几个属性
其中第一个属性是用来设置输入提示的集合的,字符串集合。第二个属性是设置提示方式的。Suggest是下拉提示,Append是填充提示。两个都有就是即下拉,又填充。
第三个属性是指输入提示的数据源方式,选择CustomSource就是从第一个属性设置的数据源里搜索数据。
2.ComboBoxEx 这个控件很好用,可以实现上面控件实现不了的输入提示功能。因为他支持键盘事件。
void BindTree() { try { DBManager vDBManager = new DBManager(); vDBManager.ConnectionOpen(); string sql = "SELECT MENUCODE,MENUNAME,MENUDEF FROM MENU"; DataTable dt = vDBManager.Query(sql).Tables[0]; vDBManager.ConnectionClose(); #region dgv //DataGridViewX dgv = new DataGridViewX(); //dgv.AutoGenerateColumns = false; //dgv.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //dgv.Columns.Add("MenuCode", "功能代码"); //dgv.Columns["MenuCode"].DataPropertyName = "MENUCODE"; //dgv.Columns["MenuCode"].ReadOnly = true; //dgv.Columns["MenuCode"].Visible = false; //dgv.Columns.Add("MenuName", "功能名称"); //dgv.Columns["MenuName"].DataPropertyName = "MENUNAME"; //dgv.Columns["MenuName"].ReadOnly = true; //dgv.Columns.Add("MenuDef", "功能简码"); //dgv.Columns["MenuDef"].DataPropertyName = "MENUDEF"; //dgv.Columns["MenuDef"].ReadOnly = true; //dgv.DataSource = dt; //dgv.AllowUserToAddRows = false; //dgv.MultiSelect = false; //dgv.RowHeadersVisible = false; //tbdMenu.DropDownControl = dgv; 这句是后来自己加的,用来设置下拉控件 #endregion foreach (DataRow dr in dt.Rows) { cbMenu.AutoCompleteCustomSource.Add(dr["MENUDEF"].ToString() + "_" + dr["MENUNAME"].ToString()); if (!mh.ContainsKey(dr["MENUDEF"].ToString() + "_" + dr["MENUNAME"].ToString())) { mh.Add(dr["MENUDEF"].ToString() + "_" + dr["MENUNAME"].ToString(), dr["MENUCODE"].ToString()); } } dt.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void cbMenu_KeyDown(object sender, KeyEventArgs e) { try { if (e.KeyCode == Keys.Enter) { OnUCreateTab(new TabsEventArgs(mh[cbMenu.Text.ToUpper()].ToString())); } } catch (Exception ex) { MessageBox.Show("没有找到该功能或权限不足!"); } }