用DataGridview.Rows[x].Cells[y].Selected=true;不生效。,用dataGridView.GetType().GetMethod("OnCellBeginEdit", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(dataGridView,             new object[] { new DataGridViewCellCancelEventArgs(x, y) });还是不生效。。怎么办?好像是因为控件默认选定了下一行或鼠标点中的行的关系,怎么避免?

解决方案 »

  1.   

     this.dataGridView1.CurrentCell = this.dataGridView1.Rows[2].Cells[0];
      this.dataGridView1.BeginEdit(false);
      

  2.   

    设置他的CurrentCell为你想要的Cell
    比如第一行第二列
    this.DataGridView1.CurrentCell  =this.DataGridView.Row[0].Cells[1];
      

  3.   

    回一楼,还是不生效,忘了说,我是在CellValueChanged事件触发时调用的,好像动作总是被其它动作遮盖掉了,有什么好办法避开其它动作?(不要叫我重载DataGridView。)
      

  4.   

    1樓是正確的。
    樓主為什麼要在CellValueChanged裡調用呢,既然CellValueChanged,那它就已經是編輯了
      

  5.   

    DataGridview.Rows[x].Cells[y].Selected=true;
    把这段代码写到Enter事件中就可以了
    同样如果不想窗体加载的时候选中第一行的时候也是用同样的方法.
      

  6.   

    Enter事件不是在刚进入编辑时触发的吗?我要的是编辑完后数据改变后才跳入下一格啊。
    BeginEdit()试过了,不生效,关键是都说了被数据改变后系统自动引发的一系列其它动作(比如说按回车结束编辑状态的会自动跳到下一行,用鼠标结束编辑状态的会自动跳到鼠标点中的那一行)遮盖掉了,现在关键是要跳这些动作再强制下一格进入编辑状态要如何实现,比如说有没有哪些恰当的事件可以利用啊之类的?
      

  7.   

    Enter:在控件成为该窗体的活动控件时发生。。
      

  8.   

    哈哈,自己解决了,把数据留到SelectionChanged事件去调用就OK啰,等这么久居然也没人这么告诉我,唉。。
    结帖。
      

  9.   

    selected只是选中而不是进入编辑状态