您的位置:首页 > 其它

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

2008-06-28 22:33 453 查看
问题的提出

经常使用的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); }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: