上下键不在datagridview单元格中触发按键事件文本框

时间:2012-12-23 07:25:50

标签: c# winforms

我试着在datagridview cell keypress事件上弹出一个选择框。选择框弹出工作但上下键没有触发我想向下移动选择框数据同时从datagridview单元格按下向上和向下键

这些代码正在使用

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        DataGridView dttmp = (DataGridView)sender;
        csearch = "";
        var txtbox = e.Control as TextBox;
        if (txtbox != null)
        {
            txtbox.KeyPress -= new KeyPressEventHandler(textBoxPart_TextChanged);
            txtbox.KeyPress += new KeyPressEventHandler(textBoxPart_TextChanged);
            txtbox.Validating -= new CancelEventHandler(txtbox_Validating);
            txtbox.Validating += new CancelEventHandler(txtbox_Validating);
            txtbox.LostFocus += new EventHandler(txtbox_LostFocus);
        }
    }
 private void textBoxPart_TextChanged(object sender, KeyPressEventArgs e)
    {
        if (dataGridView1.CurrentCell.ColumnIndex == 1)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Up))
            {
                if (srchbox.Rows.Count > 1)
                {
                    int curind = srchbox.CurrentRow.Index;
                    //srchbox.Rows[curind - 1].Selected = true;
                    if (curind - 1 >= 0)
                    {
                        srchbox.CurrentCell = srchbox.Rows[curind - 1].Cells[1];
                        srchbox.Refresh();
                    }
                }
                e.Handled = true;
            }

}

2 个答案:

答案 0 :(得分:1)

改为使用keydown或keyup事件。

Control.KeyPress documentation州:

  

KeyPress事件不是由非字符键引发的;但是,非字符键确实会引发KeyDown和KeyUp事件。

答案 1 :(得分:1)

尝试使用DataGridView.CellEnter事件:

  

DataGridView控件中的当前单元格发生更改或控件接收输入焦点时发生。

DataGridView.CellLeave事件

  

当单元格失去输入焦点但不再是当前单元格时发生。