C#中datagridview使用技巧系列谈(-)让输入焦点从左到右

问题的提出

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

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

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

public class dgv : DataGridView

{ protected override bool ProcessDialogKey(Keys keyData)

{ Keys key = (keyData & Keys.KeyCode);

if (key == Keys.Enter)

{ return this.ProcessRightKey(keyData);

}

return base.ProcessDialogKey(keyData);

}

protected override bool ProcessDataGridViewKey(KeyEventArgs e)

{ if (e.KeyCode == Keys.Enter)

{ return this.ProcessRightKey(e.KeyData); }

return base.ProcessDataGridViewKey(e); }

public new bool ProcessRightKey(Keys keyData)

{ Keys key = (keyData & Keys.KeyCode);

if (key == Keys.Enter) {

// for new row use

//如果dgv中输入焦点在最后一行最后一列则新增行,并将输入交代那移到新增行,首列 if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex == (base.RowCount - 1)))

{ ((BindingSource)base.DataSource).AddNew(); base.CurrentCell = base.Rows[base.RowCount - 1].Cells[0];

return true; }

if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex + 1 != base.NewRowIndex))

{ base.CurrentCell = base.Rows[base.CurrentCell.RowIndex + 1].Cells[0]; return true; }

return base.ProcessRightKey(keyData); }

return base.ProcessRightKey(keyData); }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值