2005用的不是很熟,但是加了combobox控件还是许多人多希望看到的,但是我看了看居然没有事件来驱动,我靠,后来找了找资料,有的人用CellClick,CellValueChanged,但是这两中不是很好用,MSDN推荐的是CurrentCellDirtyStateChanged,用了这个,在点checkbox到是马上就触发了,但是它运行了触发了两次,应该是改变了值后又触发了这个事件,我试着把DataGridView给CommitEdit和EndEdit了一把,但是还是不行,其实和combox一样,如果每点一次总是跑两下,太不爽了,由于也是弄05不久,大家有没有弄过的,给指点下迷津啊。

解决方案 »

  1.   

    晕..你想触发什么事件?在改变combox值是就触发事件没这个必要吧.你可以选择
    button里触发CellContentClick
    或者直接CellEndEdit
      

  2.   

    嗯,先感谢有个人回答,是这样的,DataGrid中有个CheckBox,我想在CheckBox打勾或不打勾后马上触发一个事件,和CheckBox本身的checked事件类似的。ComboBoxColumn我也是想选择了就触发事件,是和ComboBox的SelectIndexChanged事件类似的,CellContentClick什么的,总是需要点一下别处才触发啊。
      

  3.   

    每人理了居然,嗯,现在是当DataGridView未绑定数据源的时候,我用了个CurrentCellDirtyStateChanged事件,当checkbox打勾,或者combox选择的时候,该事件提交DataGrid的编辑,就是DataGridView.CommitEdit(),ok,该问题看着解决了。但是在DataGridView绑定好数据源后,点checkbox和combox,结果就不对了,正确的是checkbox打勾会将datagrid的一个格的内容设置为‘*****’,combox选择后会将一个格的内容设置为对应的数据,现在的结果是没有任何反映,我跟踪了一下,在绑定数据源之后,改变checkbox和combox,DataGridView的CurrentCell.ColumnIndex是0,或是别的,就是改变的cell的index,并不是我点的那个checkbox或是combo所在的cell的index,我想了想了,因为我用的是CellEndEdit事件,checkbox和combo都会改变别的cell的值,所以会触发多个CellEndEdit事件,但是我在这个事件中有判断,判断是当checkbox和combo的cell的index的时候,我才会做一些事情,但是绑定数据源后index并不是我要得到的,所以绑定数据源后问题依旧,比较惘然,大火出出主意吧
      

  4.   

    我也碰到这个问题了,正在想! 
       能不能把checkbox单独出来添加一列,不绑定数据源,当他改变的时候触发datagridview改便。
      

  5.   

    我杀,我杀,我杀杀杀,干,原来datagridview的column的index是和数据源的column的index是一致的,有可能我们在datagridview中把项目打乱了顺序,但是在绑定后,他的columnindex的顺序仍然是和数据源的顺序是一致的,靠,晕菜了,问题解决了,真受不了了。
      

  6.   

    我的问题解决了,是加了一个 dataGridView1.Invalidate()在_CellParsing事件最后。你看看CurrentCellDirtyStateChanged完了之后执行的是哪个事件,在里面加个最后加个dataGridView1.Invalidate()试试
      

  7.   

    我加的是个EndEdit(),所以触发了EndEdit事件,事件中只要判断当前事件句柄的index就可以了,现在使用起来感觉该可以,选择完后马上就会触发事件了。