1

そのため、最後の行の最後のセルで Enter キーを押すと、新しい行が追加されるように、DataGridView を調整しようとしています。最後の行でEnterキーが押されたときにDataGridViewコントロールがキーイベントに応答しないように見えるため、これを機能させることができないようです。とにかくこの動作をオーバーライドする方法はありますか?

4

2 に答える 2

1
protected override bool ProcessDataGridViewKey(KeyEventArgs e)
    {
        // Handle the ENTER key.  
        if (e.KeyCode == Keys.Enter)
        {
            // Add another if statement and use some logic to see if it is the cell you want then create your new row if true!
        }
        return base.ProcessDataGridViewKey(e);
    }

詳細はこちら: DataGridView.ProcessDataGridViewKey メソッド

于 2012-10-18T04:39:24.230 に答える
0

この動作は次のようにして実現できます。

    DataTable dt = new DataTable();
    int value = 0;
    private void Form1_Load(object sender, EventArgs e)
    {
        dataGridView1.AutoGenerateColumns = true;

        dt.Columns.AddRange(new DataColumn[]
            {
                new DataColumn("column1", typeof(string)),
                new DataColumn("column2", typeof(int)),
            });

        dt.Rows.Add("row " + value, value++);
        dataGridView1.DataSource = dt;
    }

    private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
    {
        DataGridViewCell cell = dataGridView1.SelectedCells[0];
        if (e.KeyCode == Keys.Enter && 
            cell.RowIndex == dataGridView1.Rows.Count - 1 && 
            cell.ColumnIndex == dataGridView1.Columns.Count - 1)
            dt.Rows.Add("row " + value, value++);
    }

これはデータ バインドされたグリッド ビューです。もちろん、バインドされていないデータ グリッド ビュー自体に行を追加できます。

于 2012-10-18T19:59:27.903 に答える