在某一单元格内,怎么按回车后跳到同行的下一单元格,而不是跳到这个单元格同列的单元格里?
试了几种方法,在很多事件里实现总容易出现 SetCurrentCellAddressCore 错误。

解决方案 »

  1.   

    JS可以实现啊。。
      if (event.which || event.keyCode) {
                if ((event.which == 13) || (event.keyCode == 13)) {
                    document.getElementById('objectID').focus();
                    event.returnValue = false;
                    event.cancel = true;
                    return false;
                }
            }
            else { return true; }
      

  2.   

    重载一个方法试一试:
     protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
    {
        switch (keyData)
        {
            case System.Windows.Forms.Keys.Enter:
            {
                System.Windows.Forms.SendKeys.Send("{TAB}");
                return true;
           }
          return base.ProcessCmdKey(ref msg, keyData);
        }
    }
      

  3.   

    private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
            {
                //for(int i=0;i<dataGridView1.Rows.Count-1;i++)
                //{
                //    this.dataGridView1.Rows[i].Cells[0].Value = e.RowIndex;
                //}
                //int i = 0;            //for (i = K; i < dataGridView1.Rows.Count - 1; i++)
                //{
                //    this.dataGridView1.Rows[i].Cells[0].Value = dataGridView1.Rows.Count - 1;
                //}
                //K++;
            }
      

  4.   

    private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
            {
                //for(int i=0;i<dataGridView1.Rows.Count-1;i++)
                //{
                //    this.dataGridView1.Rows[i].Cells[0].Value = e.RowIndex;
                //}
                //int i = 0;            //for (i = K; i < dataGridView1.Rows.Count - 1; i++)
                //{
                //    this.dataGridView1.Rows[i].Cells[0].Value = dataGridView1.Rows.Count - 1;
                //}
                //K++;
            }
      

  5.   

    响应按键事件,再定位表的rowindex
      

  6.   

    在键盘的keydown事件下写,获取当前单元格,然后选中下一个单元格,状态附成edit
      

  7.   

    首先在vs的view菜单栏设置taborder项,排好顺序以后
    在控件的这个事件里面写下这个代码就ok了。
    #region 自定义函数
            /// <summary>
            /// 共通的ENTER处理 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Control_KeyPress(object sender, KeyPressEventArgs e)
            {
                OpenFileDialog op = new OpenFileDialog();
                if (e.KeyChar == (Char)(Keys.Enter))
                {                if (sender is TextBoxBase && ((TextBoxBase)sender).Name == "txtItemCD")
                    {
                        if (!itemCheck())
                        {
                            txtItemCD.SelectAll();
                            return;
                        }
                    }
                    else
                    {
                        this.SelectNextControl(this.ActiveControl, true, true, true, true);
                        if (this.ActiveControl is Button && this.ActiveControl.Tag.ToString() == "stop")
                        {
                            this.SelectNextControl(this.ActiveControl, true, true, true, true);
                        }
                    }
                }
            }