【问题标题】:Move DataGridView Selected Cell/Row Up/Down On Keys Press Using C#使用 C# 在按键上移动 DataGridView 选定的单元格/行上/下
【发布时间】:2016-06-22 13:35:49
【问题描述】:

我的表单中有一个datagridview1,其中一列和无限行使用以下代码隐藏其标题...

dataGridView1.RowHeadersVisible = false;   // Hide Row Header
dataGridView1.ColumnHeadersVisible = false; // Hide Column Header

所以现在当我们关注它时,第一行已经被选中并突出显示。现在在这里我想使用我的键盘向上和向下键使用下面的KeyDown 函数上下移动我的选择,当我按下 ENTER 时,选择单元格值应该转到类级别变量,默认情况下第一个焦点行/单元格值也应该设置为类级别变量...

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;
    }
 }

目前我有一些包含 datagridview CELL 值的类级别变量,我使用下面的代码得到CellClick,但我想使用上面的代码对键执行此功能...

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    value = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
}

我的类级别变量就像...

public partial class Form1: Form
{
    string value = "";
    public MainForm()
    {
        InitializeComponent();
    }
}

那么我该如何使用 C#...???

更新:

对于向上/向下选择,我使用了以下代码及其工作。那么现在如何在按下 ENTER 键时将选定的单元格值发送到类级别变量...???

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;
}

【问题讨论】:

    标签: c# .net datagridview keypress


    【解决方案1】:

    所以最后我通过尝试 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();
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 2010-11-04
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 2015-12-05
      • 2012-09-18
      • 1970-01-01
      相关资源
      最近更新 更多