使用 C# 移动选中的 DataGridView Cell/Row Up/Down
Move DataGridView Selected Cell/Row Up/Down On Keys Press Using C#
我的表单中有一个 datagridview1
,其中一列和无限行使用以下代码隐藏其 headers...
dataGridView1.RowHeadersVisible = false; // Hide Row Header
dataGridView1.ColumnHeadersVisible = false; // Hide Column Header
所以现在当我们关注它时,第一行已经 select 编辑并突出显示。现在在这里我想使用我的键盘向上和向下键使用下面的 KeyDown
函数上下移动我的 selection 并且当我按 ENTER 时 select 单元格值应该去class 级别变量,默认情况下第一个焦点 row/cell 值应设置为 class 级别变量也...
private void datagridview1_KeyDown(object sender, KeyEventArgs e)
{
if (dataGridView1.Visible == true)
{
if (e.KeyCode.Equals(Keys.Up))
{
MessageBox.Show("Move UP Row/Cell And Select It");
}
if (e.KeyCode.Equals(Keys.Down))
{
MessageBox.Show("Move Down Row/Cell And Select It");
}
if (e.KeyCode.Equals(Keys.Enter))
{
MessageBox.Show("Send Selected Cell Value To Class Level Variable");
}
e.Handled = true;
}
}
目前我有一些 class 级别变量,其中包含我正在使用下面的代码 CellClick
获得的 datagridview CELL 值,但我想使用上面的代码在键上执行此功能...
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
value = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
}
我的 Class 级别变量就像...
public partial class Form1: Form
{
string value = "";
public MainForm()
{
InitializeComponent();
}
}
那么我如何使用 C# 来实现...???
更新:
对于UP/DOWN selection,我使用了下面的代码及其工作原理。那么现在如何在按下 ENTER 键时将 selected 单元格值发送到 class 级别变量...???
private void selectUpRow()
{
DataGridView dgv = dataGridView1;
int totalRows = dgv.Rows.Count;
int rowIndex = dgv.SelectedCells[0].OwningRow.Index;
if (rowIndex == 0)
return;
int colIndex = dgv.SelectedCells[0].OwningColumn.Index;
DataGridViewRow selectedRow = dgv.Rows[rowIndex];
dgv.ClearSelection();
dgv.Rows[rowIndex - 1].Cells[colIndex].Selected = true;
}
private void selectDownRow()
{
DataGridView dgv = dataGridView1;
int totalRows = dgv.Rows.Count;
int rowIndex = dgv.SelectedCells[0].OwningRow.Index;
if (rowIndex == totalRows - 1)
return;
int colIndex = dgv.SelectedCells[0].OwningColumn.Index;
DataGridViewRow selectedRow = dgv.Rows[rowIndex];
dgv.ClearSelection();
dgv.Rows[rowIndex + 1].Cells[colIndex].Selected = true;
}
所以我终于通过尝试 Bla Bla Bla 让它工作了。这是带有代码的简短答案...
public partial class Form1 : Form
{
string value = "";
public MainForm()
{
InitializeComponent();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (dataGridView1.Visible == true)
{
if (e.KeyCode.Equals(Keys.Up))
{
selectUpRow();
}
if (e.KeyCode.Equals(Keys.Down))
{
selectDownRow();
}
if (e.KeyCode.Equals(Keys.Enter))
{
selectCellValue();
}
e.Handled = true;
}
}
private void selectUpRow()
{
DataGridView dgv = dataGridView1;
int totalRows = dgv.Rows.Count;
int rowIndex = dgv.SelectedCells[0].OwningRow.Index;
if (rowIndex == 0)
return;
int colIndex = dgv.SelectedCells[0].OwningColumn.Index;
DataGridViewRow selectedRow = dgv.Rows[rowIndex];
dgv.ClearSelection();
dgv.Rows[rowIndex - 1].Cells[colIndex].Selected = true;
}
private void selectDownRow()
{
DataGridView dgv = dataGridView1;
int totalRows = dgv.Rows.Count;
int rowIndex = dgv.SelectedCells[0].OwningRow.Index;
if (rowIndex == totalRows - 1)
return;
int colIndex = dgv.SelectedCells[0].OwningColumn.Index;
DataGridViewRow selectedRow = dgv.Rows[rowIndex];
dgv.ClearSelection();
dgv.Rows[rowIndex + 1].Cells[colIndex].Selected = true;
}
private void selectCellValue()
{
int rowIndex = dataGridView1.SelectedCells[0].OwningRow.Index;
value = dataGridView1.Rows[rowIndex].Cells[0].Value.ToString();
}
}
我的表单中有一个 datagridview1
,其中一列和无限行使用以下代码隐藏其 headers...
dataGridView1.RowHeadersVisible = false; // Hide Row Header
dataGridView1.ColumnHeadersVisible = false; // Hide Column Header
所以现在当我们关注它时,第一行已经 select 编辑并突出显示。现在在这里我想使用我的键盘向上和向下键使用下面的 KeyDown
函数上下移动我的 selection 并且当我按 ENTER 时 select 单元格值应该去class 级别变量,默认情况下第一个焦点 row/cell 值应设置为 class 级别变量也...
private void datagridview1_KeyDown(object sender, KeyEventArgs e)
{
if (dataGridView1.Visible == true)
{
if (e.KeyCode.Equals(Keys.Up))
{
MessageBox.Show("Move UP Row/Cell And Select It");
}
if (e.KeyCode.Equals(Keys.Down))
{
MessageBox.Show("Move Down Row/Cell And Select It");
}
if (e.KeyCode.Equals(Keys.Enter))
{
MessageBox.Show("Send Selected Cell Value To Class Level Variable");
}
e.Handled = true;
}
}
目前我有一些 class 级别变量,其中包含我正在使用下面的代码 CellClick
获得的 datagridview CELL 值,但我想使用上面的代码在键上执行此功能...
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
value = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
}
我的 Class 级别变量就像...
public partial class Form1: Form
{
string value = "";
public MainForm()
{
InitializeComponent();
}
}
那么我如何使用 C# 来实现...???
更新:
对于UP/DOWN selection,我使用了下面的代码及其工作原理。那么现在如何在按下 ENTER 键时将 selected 单元格值发送到 class 级别变量...???
private void selectUpRow()
{
DataGridView dgv = dataGridView1;
int totalRows = dgv.Rows.Count;
int rowIndex = dgv.SelectedCells[0].OwningRow.Index;
if (rowIndex == 0)
return;
int colIndex = dgv.SelectedCells[0].OwningColumn.Index;
DataGridViewRow selectedRow = dgv.Rows[rowIndex];
dgv.ClearSelection();
dgv.Rows[rowIndex - 1].Cells[colIndex].Selected = true;
}
private void selectDownRow()
{
DataGridView dgv = dataGridView1;
int totalRows = dgv.Rows.Count;
int rowIndex = dgv.SelectedCells[0].OwningRow.Index;
if (rowIndex == totalRows - 1)
return;
int colIndex = dgv.SelectedCells[0].OwningColumn.Index;
DataGridViewRow selectedRow = dgv.Rows[rowIndex];
dgv.ClearSelection();
dgv.Rows[rowIndex + 1].Cells[colIndex].Selected = true;
}
所以我终于通过尝试 Bla Bla Bla 让它工作了。这是带有代码的简短答案...
public partial class Form1 : Form
{
string value = "";
public MainForm()
{
InitializeComponent();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (dataGridView1.Visible == true)
{
if (e.KeyCode.Equals(Keys.Up))
{
selectUpRow();
}
if (e.KeyCode.Equals(Keys.Down))
{
selectDownRow();
}
if (e.KeyCode.Equals(Keys.Enter))
{
selectCellValue();
}
e.Handled = true;
}
}
private void selectUpRow()
{
DataGridView dgv = dataGridView1;
int totalRows = dgv.Rows.Count;
int rowIndex = dgv.SelectedCells[0].OwningRow.Index;
if (rowIndex == 0)
return;
int colIndex = dgv.SelectedCells[0].OwningColumn.Index;
DataGridViewRow selectedRow = dgv.Rows[rowIndex];
dgv.ClearSelection();
dgv.Rows[rowIndex - 1].Cells[colIndex].Selected = true;
}
private void selectDownRow()
{
DataGridView dgv = dataGridView1;
int totalRows = dgv.Rows.Count;
int rowIndex = dgv.SelectedCells[0].OwningRow.Index;
if (rowIndex == totalRows - 1)
return;
int colIndex = dgv.SelectedCells[0].OwningColumn.Index;
DataGridViewRow selectedRow = dgv.Rows[rowIndex];
dgv.ClearSelection();
dgv.Rows[rowIndex + 1].Cells[colIndex].Selected = true;
}
private void selectCellValue()
{
int rowIndex = dataGridView1.SelectedCells[0].OwningRow.Index;
value = dataGridView1.Rows[rowIndex].Cells[0].Value.ToString();
}
}