Winforms 如何为datagridview组合框列分配热键?
我有网格视图有组合框列[“column2”]Winforms 如何为datagridview组合框列分配热键?,winforms,c#-4.0,datagridview,datagridviewcombobox,Winforms,C# 4.0,Datagridview,Datagridviewcombobox,我有网格视图有组合框列[“column2”] if(keyData==(Keys.F11)) { 对于(int i=0;i
if(keyData==(Keys.F11))
{
对于(int i=0;i
您不能直接将ShortcutKey
分配给单个单元格。为组合键处理DataGridView
的KeyPress
事件。在事件处理程序中,输入以下代码
void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyData == (Keys.Alt | Keys.E))
{
dataGridView1.Rows[RowIndex].Cells[ColumnIndex].Selected = true;
dataGridView1.CurrentCell = dataGridView1.Rows[RowIndex].Cells[ColumnIndex];
dataGridView1.BeginEdit(false);
}
}
如果任何单元格已处于编辑模式,则编辑控件将获得KeyPress
事件,而不是DataGridView
。如果要克服这一问题,必须对现有DataGridView控件进行子类化,并覆盖其ProcessCmdKey
函数。请参阅SO问题的答案
要更改编辑组合的选定索引,请订阅EditingControlShowing
事件,并在事件处理程序中更改组合框
索引
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox control = e.Control as ComboBox;
if (control !=null)
{
// set the selected index of the combo here.
}
}
聚焦该单元格中的问题并将其放下:我想用快捷键更改此列的索引!@KOKO抱歉,我无法理解您的意图…您想实现什么?我想更改的不仅仅是选择组合框单元格cell@KOKO如果可行,请接受答案并投票表决
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox control = e.Control as ComboBox;
if (control !=null)
{
// set the selected index of the combo here.
}
}