gpt4 book ai didi

c# - DataGridView-当我按下回车键时,它会转到下一个单元格

转载 作者:太空狗 更新时间:2023-10-29 18:13:39 27 4
gpt4 key购买 nike

我有一个包含 5 列的 datagridview,当我按下“enter”时,它会转到下一个单元格,当它到达行尾时,当我按下 enter 时,它会添加新行,但我的问题是当我移动时在我按回车键后转到前几行,它会跳转这些行并且不会转到下一个单元格,有什么帮助吗?

public partial class Form1 : Form
{
public static int Col;
public static int Row;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.AllowUserToAddRows = false;
dataGridView1.Rows.Add();
}

private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
Col = dataGridView1.CurrentCellAddress.X;
Row = dataGridView1.CurrentCellAddress.Y;
}

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (int)Keys.Enter)
{
if (Col + 1 < 5)
{
dataGridView1.CurrentCell = dataGridView1[Col + 1, Row];
}
else
{
dataGridView1.Rows.Add();
dataGridView1.CurrentCell = dataGridView1[Col - 4, Row + 1];
}
}
}
}

最佳答案

忘记 CellEnter 事件和 Form1_KeyPress 事件。像这样处理 dataGridView1_KeyDown 事件:

    private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
{
int col = dataGridView1.CurrentCell.ColumnIndex;
int row = dataGridView1.CurrentCell.RowIndex;

if (col < dataGridView1.ColumnCount - 1)
{
col ++;
}
else
{
col = 0;
row++;
}

if (row == dataGridView1.RowCount)
dataGridView1.Rows.Add();

dataGridView1.CurrentCell = dataGridView1[col, row];
e.Handled = true;
}
}

请注意,我稍微更改了代码,并记得将 Handled 事件属性设置为 true,否则它将处理默认行为。

干杯!

关于c# - DataGridView-当我按下回车键时,它会转到下一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9674078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com