TextBox 按键(输入)增加 datagridview 选定行
TextBox keypress (enter) increments datagridview selected row
我有一个文本框。按回车键时,我希望它将 DatagridView
选定的行更改为下一行。
到目前为止,我的以下内容不起作用。
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (int)Keys.Enter)
{
save_Click(sender, e);
asd(sender, e);
}
}
private void asd(object sender, KeyPressEventArgs e)
{
SendKeys.Send("{Tab}"); //also tried enter
}
您可能应该如下编写 代码 以在 文本框的 Key Down 事件上迭代该行!
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
int CurrentRow = dataGridView1.CurrentCell.RowIndex;
CurrentRow++;
if (CurrentRow < dataGridView1.Rows.Count)
{
dataGridView1.CurrentCell = dataGridView1.Rows[CurrentRow].Cells[0];
}
else
{
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
}
}
}
最好覆盖回车键 ProcessCmdKey
。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Enter)
{
if (yourTextBox.Focused) // only when your are in the TextBox
{
advanceRow(yourDataGridView);
return false; // probably don't add new line
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
要前进当前行最好使用函数..
int advanceRow(DataGridView dgv)
{
int current = dgv.CurrentRow.Index;
if (current < dgv.Rows.Count - 1) // only if we hae not reached the bottom
{
dgv.CurrentCell = dgv[ 0, current + 1];
return current + 1;
}
return current;
}
我有一个文本框。按回车键时,我希望它将 DatagridView
选定的行更改为下一行。
到目前为止,我的以下内容不起作用。
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (int)Keys.Enter)
{
save_Click(sender, e);
asd(sender, e);
}
}
private void asd(object sender, KeyPressEventArgs e)
{
SendKeys.Send("{Tab}"); //also tried enter
}
您可能应该如下编写 代码 以在 文本框的 Key Down 事件上迭代该行!
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
int CurrentRow = dataGridView1.CurrentCell.RowIndex;
CurrentRow++;
if (CurrentRow < dataGridView1.Rows.Count)
{
dataGridView1.CurrentCell = dataGridView1.Rows[CurrentRow].Cells[0];
}
else
{
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
}
}
}
最好覆盖回车键 ProcessCmdKey
。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Enter)
{
if (yourTextBox.Focused) // only when your are in the TextBox
{
advanceRow(yourDataGridView);
return false; // probably don't add new line
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
要前进当前行最好使用函数..
int advanceRow(DataGridView dgv)
{
int current = dgv.CurrentRow.Index;
if (current < dgv.Rows.Count - 1) // only if we hae not reached the bottom
{
dgv.CurrentCell = dgv[ 0, current + 1];
return current + 1;
}
return current;
}