一行的情况下表里面的Expression就没用了呢好像Expression
必须在换行后才能起作用可当只有一行而且AllowNew设
置成false以后按回车就不能自动换行了。Expression
也不起作用了怎么办呢?当我把焦点离开datagrid时候
Expression到可以起作用,但是我需要的是不离开此行
怎么使Expression起作用。
简单的说就使输入完某一单元格后,焦点在不离开此行的
情况下使Expression起作用。
2、我想输入完后,按回车能跳转到此行的某一列(不是下一
列)。
16 个解决方案
#1
http://www.syncfusion.com/FAQ/WinForms/default.asp#44
#2
这上面得问题我都看过了。没有我说得问题呀
#3
你的问题我以前也遇到过,也不知道怎么解决,需要你更改列的样式,或者直接继承定义一个新列样式
#4
在离开编辑控件(如datagrid)时加上处理语句。如:bm.endcurrentedit()
#5
我要的效果是
不离开datagrid的时候怎么触发呢?
而且datagrid只有一行,不能添加新行的情况下!
不离开datagrid的时候怎么触发呢?
而且datagrid只有一行,不能添加新行的情况下!
#6
问题这么难
几天了在微软新闻组和这里都得不到答案!
唉!怎么揭帖呀!
我都出了100分求这个问题了!两个帖子都结不了
几天了在微软新闻组和这里都得不到答案!
唉!怎么揭帖呀!
我都出了100分求这个问题了!两个帖子都结不了
#7
自己写一个控件,继承自现有的Datagrid控件,再重写处理命令键响应程序ProcessCmdKey,来实现对enter键的调到同行其他列的功能。
vb.net做法如下,仅供参考.(不是原著,学习别人的而已)
步骤一:在vs.net编辑器中,“文件”->“新建”->“项目”,然后选择新建一个“Windows控件库”的项目:HenryDatagrid。这样运行的结果会生成一个DLL文件,而不是EXE执行文件;
步骤二:在HenryDatagrid.vb文件代码编辑窗口中加入有阴影的这句话:
Public Class HenryDatagrid
Inherits 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跳格”事件就这样完成了。
vb.net做法如下,仅供参考.(不是原著,学习别人的而已)
步骤一:在vs.net编辑器中,“文件”->“新建”->“项目”,然后选择新建一个“Windows控件库”的项目:HenryDatagrid。这样运行的结果会生成一个DLL文件,而不是EXE执行文件;
步骤二:在HenryDatagrid.vb文件代码编辑窗口中加入有阴影的这句话:
Public Class HenryDatagrid
Inherits 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跳格”事件就这样完成了。
#8
第一个问题怎么解决
#9
我也碰到过这样的问题,头疼。
#10
欢迎大家up
up者有分
up者有分
#11
up的好
#12
主要是第一个问题怎么解决?
用CurrentCellChanged 这个事件自己计算好像能解决
用CurrentCellChanged 这个事件自己计算好像能解决
#13
关注一下
#14
up..........
up...........
up...........
up...........
up...........
#15
等了n天都没回答!当散分算了!
#16
up up up !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#1
http://www.syncfusion.com/FAQ/WinForms/default.asp#44
#2
这上面得问题我都看过了。没有我说得问题呀
#3
你的问题我以前也遇到过,也不知道怎么解决,需要你更改列的样式,或者直接继承定义一个新列样式
#4
在离开编辑控件(如datagrid)时加上处理语句。如:bm.endcurrentedit()
#5
我要的效果是
不离开datagrid的时候怎么触发呢?
而且datagrid只有一行,不能添加新行的情况下!
不离开datagrid的时候怎么触发呢?
而且datagrid只有一行,不能添加新行的情况下!
#6
问题这么难
几天了在微软新闻组和这里都得不到答案!
唉!怎么揭帖呀!
我都出了100分求这个问题了!两个帖子都结不了
几天了在微软新闻组和这里都得不到答案!
唉!怎么揭帖呀!
我都出了100分求这个问题了!两个帖子都结不了
#7
自己写一个控件,继承自现有的Datagrid控件,再重写处理命令键响应程序ProcessCmdKey,来实现对enter键的调到同行其他列的功能。
vb.net做法如下,仅供参考.(不是原著,学习别人的而已)
步骤一:在vs.net编辑器中,“文件”->“新建”->“项目”,然后选择新建一个“Windows控件库”的项目:HenryDatagrid。这样运行的结果会生成一个DLL文件,而不是EXE执行文件;
步骤二:在HenryDatagrid.vb文件代码编辑窗口中加入有阴影的这句话:
Public Class HenryDatagrid
Inherits 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跳格”事件就这样完成了。
vb.net做法如下,仅供参考.(不是原著,学习别人的而已)
步骤一:在vs.net编辑器中,“文件”->“新建”->“项目”,然后选择新建一个“Windows控件库”的项目:HenryDatagrid。这样运行的结果会生成一个DLL文件,而不是EXE执行文件;
步骤二:在HenryDatagrid.vb文件代码编辑窗口中加入有阴影的这句话:
Public Class HenryDatagrid
Inherits 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跳格”事件就这样完成了。
#8
第一个问题怎么解决
#9
我也碰到过这样的问题,头疼。
#10
欢迎大家up
up者有分
up者有分
#11
up的好
#12
主要是第一个问题怎么解决?
用CurrentCellChanged 这个事件自己计算好像能解决
用CurrentCellChanged 这个事件自己计算好像能解决
#13
关注一下
#14
up..........
up...........
up...........
up...........
up...........
#15
等了n天都没回答!当散分算了!
#16
up up up !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!