http://www.syncfusion.com/FAQ/WinForms/default.asp#44

解决方案 »

  1.   

    在离开编辑控件(如datagrid)时加上处理语句。如:bm.endcurrentedit()
      

  2.   

    我要的效果是
    不离开datagrid的时候怎么触发呢?
    而且datagrid只有一行,不能添加新行的情况下!
      

  3.   

    自己写一个控件,继承自现有的Datagrid控件,再重写处理命令键响应程序ProcessCmdKey,来实现对enter键的调到同行其他列的功能。
    vb.net做法如下,仅供参考.(不是原著,学习别人的而已)
    步骤一:在vs.net编辑器中,“文件”->“新建”->“项目”,然后选择新建一个“Windows控件库”的项目:HenryDatagrid。这样运行的结果会生成一个DLL文件,而不是EXE执行文件;步骤二:在HenryDatagrid.vb文件代码编辑窗口中加入有阴影的这句话:Public Class HenryDatagridInherits System.Windows.Forms.DataGrid   ‘这表示新建的控件是Datagrid的派生控件步骤三:在“类名”窗口中选择overrides,然后在“方法名称”窗口选择“ProcessCmdKey"然后就会出现一段空的ProcessCmdKey代码段,我们可以写入自己的代码:Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message,  ByVal keyData As System.Windows.Forms.Keys) As Boolean        Dim WM_KEYDOWN As Integer = 256  ‘消息响应的问题可以参考其他win32编程的文章        Dim WM_SYSKEYDOWN As Integer = 260         If ((msg.Msg = WM_KEYDOWN) Or (msg.Msg = WM_SYSKEYDOWN)) Then            Select Case keyData                Case Keys.Down                       MsgBox("截到下箭头键")                    Return True                Case Keys.Up                    MsgBox("截到上箭头键")                    Return True                Case Keys.Enter                    SendKeys.Send("{Tab}")                    Return True                Case Keys.Control + Keys.M                    MsgBox("<CTRL> + m 组合键被截获")                    Return True                Case Keys.Alt + Keys.Z                    MsgBox("<ALT> + z 组合键被截获")                    Return True            End Select        End If End Function  然后运行一下,生成HenryDatagrid.dll文件步骤四:再建立一个项目,然后在新项目的设计窗口的工具箱上单击鼠标右键,在弹出菜单中选择“添加引用”,然后在.net选项卡中占击“浏览”,选择到HenryDatagrid.dll,加入进来,然后您的工具箱上会多出一个HenryDatagrid的图标,在新项目中使用HenryDatagrid来代替datagrid控件。看一下,您所需要的“Enter跳格”事件就这样完成了。
      

  4.   

    主要是第一个问题怎么解决?用CurrentCellChanged 这个事件自己计算好像能解决
      

  5.   

    up..........
    up...........
    up...........
      

  6.   

    up up up !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!