1

我试图在datagridview单元格按键事件上弹出一个选择框。选择框弹出工作但向上和向下键没有触发我想在从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;
            }

}

4

2 回答 2

1

请改用 keydown 或 keyup 事件。

Control.KeyPress 文档状态:

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

于 2012-12-23T07:30:03.603 回答
1

尝试使用DataGridView.CellEnter事件:

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

DataGridView.CellLeave事件

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

于 2012-12-23T07:50:58.540 回答