Winfrom弹出下拉编辑控件,DataGridView弹出式下拉录入,支持TextBox,提供DEMO下载弹出下拉编辑控件 支持自定义字段、多字段关键字模糊查询 支持必选或者可选方式录入 支持DataGridView(回车向右,最后一行向下),支持TextBox
部分关键代码
代码
#region 定义事件
/// <summary> /// 表示弹出窗口菜单前的一个事件 /// </summary> [Category("行为"), Description("弹出菜单前")] public event EventPopMenu BeforPopMenu; /// <summary> /// 表示选中弹出窗口菜单后的一个事件 /// </summary> [Category("行为"), Description("选中弹出菜单后")] public event EventPopMenu AfterPopMenu; /// <summary> /// 表示请求重新检索数据的一个事件 /// </summary> [Category("行为"), Description("请求重新检索数据")] public event EventPopMenu CallBackDataSource; #endregion #region 定义属性 private string m_MappingName = ""; /// <summary> /// 获取或设置当前文本对应的下拉datagridview列名 /// </summary> [Category("数据"), Description("当前文本对应的下拉datagridview列名")] public string MappingName { get { return m_MappingName; } set { m_MappingName = value; } } private SortedList m_idcol = new SortedList(); /// <summary> /// 获取或设置当前下拉datagridview的主列名和值对 /// 用法:Idcol.GetByIndex(Idcol.IndexOfKey("列名")); /// </summary> [Category("数据"), Description("当前下拉datagridview的主列名和值对")] public SortedList IdCol { get { return m_idcol; } set { m_idcol = value; } } private int m_maxrow = 5000; /// <summary> /// 获取或设置获取数据的最大行数 /// 由lastValue、MaxRow、minRow、Text 组合检查是否需向后台重新检索数据 /// </summary> [Category("行为"), Description("获取数据的最大行数")] public int MaxRow { get { return m_maxrow; } set { m_lastrow = value; m_maxrow = value; } } private int m_minrow = 300; /// <summary> /// 获取或设置获取数据行数的下限(每次最多能显示的行数) /// 由lastValue、MaxRow、minRow、Text 组合检查是否需向后台重新检索数据 /// </summary> [Category("行为"), Description("获取数据行数的下限")] public int MinRow { get { return m_minrow; } set { m_minrow = value; } } private bool m_must = false; /// <summary> /// 获取或设置当前文本是否必选 /// </summary> [Category("行为"), Description("当前文本是否必选")] public bool MustChoice { get { return m_must; } set { m_must = value; } } private string m_filter = ""; /// <summary> /// 获取或设置当前录入文本时过滤的表达式格式[字段1={0} or 字段2 like '%{0}%'] /// </summary> [Category("行为"), Description("当前录入文本时过滤的表达式格式: 字段1={0} or 字段2 like '%{0}%'")] public string Filter { get { return m_filter; } set { m_filter = value; } } private string m_CancelMust = ""; /// <summary> /// 获取或设置当前文本头字串与之相同时为非必选(忽略MustChoice) /// </summary> [Category("行为"), Description("当前文本头字串与之相同时为非必选")] public string CancelMust { get { return m_CancelMust; } set { m_CancelMust = value; } } /// <summary> /// 获取或设置下拉的数据视图 /// </summary> [Category("数据"), Description("下拉的数据视图")] public DataGridView datagridview { get { return ControlHost.Control as DataGridView; } set { //非自动创建列,就复制列 datagridview.AutoGenerateColumns = value.AutoGenerateColumns; if (!value.AutoGenerateColumns) { datagridview.Columns.Clear(); for (int i = 0; i < value.Columns.Count; i++) { DataGridViewColumn dgvc = (DataGridViewColumn)value.Columns[i].Clone(); dgvc.Visible = ((DataGridViewColumn)value.Columns[i]).Visible; datagridview.Columns.Add(dgvc); } } //复制其它属性 } } private int dpw = 300, dph = 200; /// <summary> /// 获取或设置下拉的宽度 /// </summary> [Category("外观"), Description("下拉的宽度")] public int DropDownWidth { set { dpw = value; } get { return dpw; } } /// <summary> /// 获取或设置下拉的高度 /// </summary> [Category("外观"), Description("下拉的高度")] public int DropDownHeight { set { dph = value; } get { return dph; } } private bool m_StopChange = false; /// <summary> /// 暂停响应文本变化事件,防止递归 /// </summary> public bool StopChange { get { return m_StopChange; } set { m_StopChange = value; } } /// <summary> /// 下拉框是否可视 /// </summary> public bool dropDownVisible { get { return dropDown.Visible; } } #endregion |
|