C#:在 datagridview 中取回行(shift+tab)
C#: get row back in datagridview (shift+tab)
我按 Tab 按钮以编程方式跳转到下一行。
如果我想跳回,我使用 tab + shift 键。
如果按下 tab + shift,行数将减少 2。
当我想从最后一行返回时,索引跳转到第一个控件,它的制表符索引为 0。
最后一行有什么问题?
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
int row = dataGridView1.CurrentCell.RowIndex;
row++;
if (row > dataGridView1.RowCount - 1)
{
menuStrip1.Select();
datensatzToolStripMenuItem.Select();
dataGridView1.CurrentCell = dataGridView1[0, 0];
}
else dataGridView1.CurrentCell = dataGridView1[0, row];
e.Handled = true;
}
if (e.Modifiers == Keys.Shift && e.KeyCode == Keys.Tab)
{
int row = dataGridView1.CurrentCell.RowIndex;
row -= 2;
if (row < 0)
{
menuStrip1.Select();
datensatzToolStripMenuItem.Select();
dataGridView1.CurrentCell = dataGridView1[0, 0];
}
else dataGridView1.CurrentCell = dataGridView1[0, row];
e.Handled = true;
}
}
您遇到的问题是因为当按下 SHIFT+Tab 时,您的代码中的两个条件都将得到满足。
以下代码在我的机器上运行良好。
private void dataGridView1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Tab) {
if (e.Modifiers != Keys.Shift) {
int row = dataGridView1.CurrentCell.RowIndex;
row++;
if (row > dataGridView1.RowCount - 1) {
menuStrip1.Select();
datensatzToolStripMenuItem.Select();
dataGridView1.CurrentCell = dataGridView1[0, 0];
}
else {
dataGridView1.CurrentCell = dataGridView1[0, row];
}
e.Handled = true;
}
else {
int row = dataGridView1.CurrentCell.RowIndex;
row -= 1;
if (row < 0) {
menuStrip1.Select();
datensatzToolStripMenuItem.Select();
dataGridView1.CurrentCell = dataGridView1[0, 0];
}
else {
dataGridView1.CurrentCell = dataGridView1[0, row];
}
e.Handled = true;
}
}
}
我按 Tab 按钮以编程方式跳转到下一行。 如果我想跳回,我使用 tab + shift 键。 如果按下 tab + shift,行数将减少 2。 当我想从最后一行返回时,索引跳转到第一个控件,它的制表符索引为 0。 最后一行有什么问题?
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
int row = dataGridView1.CurrentCell.RowIndex;
row++;
if (row > dataGridView1.RowCount - 1)
{
menuStrip1.Select();
datensatzToolStripMenuItem.Select();
dataGridView1.CurrentCell = dataGridView1[0, 0];
}
else dataGridView1.CurrentCell = dataGridView1[0, row];
e.Handled = true;
}
if (e.Modifiers == Keys.Shift && e.KeyCode == Keys.Tab)
{
int row = dataGridView1.CurrentCell.RowIndex;
row -= 2;
if (row < 0)
{
menuStrip1.Select();
datensatzToolStripMenuItem.Select();
dataGridView1.CurrentCell = dataGridView1[0, 0];
}
else dataGridView1.CurrentCell = dataGridView1[0, row];
e.Handled = true;
}
}
您遇到的问题是因为当按下 SHIFT+Tab 时,您的代码中的两个条件都将得到满足。
以下代码在我的机器上运行良好。
private void dataGridView1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Tab) {
if (e.Modifiers != Keys.Shift) {
int row = dataGridView1.CurrentCell.RowIndex;
row++;
if (row > dataGridView1.RowCount - 1) {
menuStrip1.Select();
datensatzToolStripMenuItem.Select();
dataGridView1.CurrentCell = dataGridView1[0, 0];
}
else {
dataGridView1.CurrentCell = dataGridView1[0, row];
}
e.Handled = true;
}
else {
int row = dataGridView1.CurrentCell.RowIndex;
row -= 1;
if (row < 0) {
menuStrip1.Select();
datensatzToolStripMenuItem.Select();
dataGridView1.CurrentCell = dataGridView1[0, 0];
}
else {
dataGridView1.CurrentCell = dataGridView1[0, row];
}
e.Handled = true;
}
}
}