簡體   English   中英

輸入鍵的Datagridview事件

[英]Datagridview event for enter key

我有一個綁定的datagridview。當我在datagridview中選擇一個單元格並按Enter鍵時,我希望引發一個事件,該事件將所選單元格的行的第一列值傳遞給另一種形式。 怎么做?

我通過使用_EditingControlShowing Event到datagridview並使用PreviewKeyDown到此單元格的代碼解決了這個問題:

DataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler (DataGridView1_EditingControlShowing);

private void dbg_EditingControlShowing (object sender, DataGridViewEditingControlShowingEventArgs e) {
        TextBox txb = e.Control as TextBox;
        txb.PreviewKeyDown += (S, E) => {
            if (E.KeyCode == Keys.Enter) {
                DataGridView1.CurrentCell = dbg.CurrentRow.Cells["Column_name"];
                //Or any code you ...
            }
        };
}
void TextBox1_KeyDown(object sender, KeyEventArgs e)
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
        e.Handled = true; 
    } 
}

void TextBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) 
{ 
    if (e.KeyCode == Keys.Return)
    {
        /* Your code here! */ 
    }
}

表格1的代碼:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("ID");
        dt.Columns.Add("Name");
        dt.Rows.Add();
        dt.Rows[dt.Rows.Count - 1][0] = "1";
        dt.Rows[dt.Rows.Count - 1][1] = "Stackoverflow";
        dataGridView1.DataSource = dt;
    }
    string ID = string.Empty;
    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        ID = dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString();
    }
       private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            Form2 frmTwo = new Form2(ID);
            frmTwo.Show();
        }
    }
}

表格2的代碼:

public partial class Form2 : Form
{
    public string Id = string.Empty;
    public Form2(string FormOneID)
    {
        InitializeComponent();
        Id = FormOneID;
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        MessageBox.Show("FormOne ID" + Environment.NewLine + Id + Environment.NewLine + "Displaying on FormTwo");
    }
}

假設這是針對Winforms的,則可以訂閱其中一個Key事件並使用該事件。

例如,這里使用KeyUp事件。

 private void myDataGridView_KeyUp(object sender, KeyEventArgs e)
 {
      // nothing is selected
      if (myDataGridView.SelectedRows.Count == 0)
          return;

      if (e.KeyCode == Keys.Enter)
      {
           string firstColumnValue = myDataGridView.SelectedRows[0].Cells[0].Value.ToString();

           // passes the value through the constructor to the 
           //   second form.
           MySecondForm f2 = new MySecondForm(firstColumnValue);
           f2.Show();
      }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM