博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 问题的提出

      经常使用的datagridview控件,当你利用它来输入数据时,如果你按下Enter 时,系统默认的是将输入焦点移动至当前列的下一行,但按中国人日常的习惯,我们希望它从左到右进行输入,怎么办呢?

  这里我们就要修改系统的两个默认键盘时间,以实现我们自如的控制datagridview埪件对回车Press事件的处理方式,具体怎么操作呢?

   新建一用户控件-该用户埪件继承于datagridview,在该埪件的代码中重写ProcessDialogKey, ProcessDataGridViewKey两个事件,让将该用户控件添加到你的项目中就可以应用了。

 

Code

 

(二)DataGridView上移下移当前行

public DataGridView _Dgv = null;
        /// <summary>
        /// 设置上移下移操作的数据源控件
        /// </summary>
        public DataGridView Dgv
        {
            get { return _Dgv; }
            set { _Dgv = value; }
        }

 protected virtual void First()
        {
            if (_Dgv == null) return;
            CurrencyManager cm = this.BindingContext[_Dgv.DataSource] as CurrencyManager;
            if (cm != null)
            {
                cm.Position = 0;
            }
        }

        public virtual void Previous()
        {
            if (_Dgv == null) return;

            CurrencyManager cm = this.BindingContext[_Dgv.DataSource] as CurrencyManager;
            if (cm != null)
            {
                cm.Position--;
            }
        }

        protected virtual void Next()
        {
            if (_Dgv == null) return;

            CurrencyManager cm = this.BindingContext[_Dgv.DataSource] as CurrencyManager;
            if (cm != null)
            {
                cm.Position++;
            }
        }

        protected virtual void Last()
        {
            if (_Dgv == null) return;

            CurrencyManager cm = this.BindingContext[_Dgv.DataSource] as CurrencyManager;
            if (cm != null)
            {
                cm.Position = cm.Count;
            }
        }