分享

Winfrom弹出下拉编辑控件,DataGridView弹出式下拉录入,支持TextBox...

 秋水风帆 2010-11-27

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约