我想在一个有网格的控件上实现这么一种操作:
单击一行数据,选中本行,再单击另外一行,选中另一行;如果单击一个已经选中的行,则选中的行就可以取消选中。其实就是不用按住ctrl键实现按住ctrl键的效果。
本来在listBox中可以实现这种操作,但是listBox中没有网格的形状,所以只好考虑其它的方法了(这个实现的方法是在单击listBox时,使用sendKeys发送ctr键)
请问这个该如何实现呢?
或者有做好的控件也可以
谢谢了!!!
单击一行数据,选中本行,再单击另外一行,选中另一行;如果单击一个已经选中的行,则选中的行就可以取消选中。其实就是不用按住ctrl键实现按住ctrl键的效果。
本来在listBox中可以实现这种操作,但是listBox中没有网格的形状,所以只好考虑其它的方法了(这个实现的方法是在单击listBox时,使用sendKeys发送ctr键)
请问这个该如何实现呢?
或者有做好的控件也可以
谢谢了!!!
解决方案 »
- 用API做串口,收发已经可以实现.但要做一个类似MSComm控件中oncomm事件的功能.但出了一点问题无法实现,请哪位高人指点一下??代码如下
- 请教一个删除文件的问题
- 怎样编写限制软件使用次数的程序?
- 在不同的系统平台下,字体显示的奇怪现象,详细情况请进入!绝对送分!
- 关于ACCESS数据库稳定的问题
- 购买权限设置源码
- ActiveReports报表里面画好表格后取得的值超出了表格的高度,然后其他列的边框却不跟随变化适应,如何解决?(江湖救急阿!)
- 如何控制光驱,取得CD标识,刻盘程序是如何做的?
- 怎样做出类似windows资源管理器的树型结构?
- 如何用ado访问不是本的数据库阿?
- 急:::子窗口不能显示.(在线等)
- 求救...各位大侠救命了!!! FSO输出到TXT文件怎么换行呀...救命!!!!!
BACKSPACE {BACKSPACE}, {BS}, 或 {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} 或 {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}或 ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} 或 {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
为了指定那些与 SHIFT、CTRL 及 ALT 等按键结合的组合键,可在这些按键码的前面放置一个或多个代码,这些代码列举如下:按键 代码
SHIFT +
CTRL ^
ALT %
为了说明在按下其它按键时应同时按下 SHIFT、CTRL、及 ALT 的任意组合键,请把那些按键的码放在括号当中。例如,为了说明按下 E 与 C 的时候同时按下 SHIFT 键,请使用 "+(EC)"。为了说明在按下 E 的时候同时按下 SHIFT 键,但接着按 C 而不按 SHIFT,则使用 "+EC"。为了指定重复键,使用 {key number} 的形式。必须在 key 与 number 之间放置一个空格。例如,{LEFT 42} 意指 42 次按下 LEFT ARROW 键;{h 10} 则是指 10 次按下 H 键。注意 不能用 SendKeys 将按键消息发送到这样一个应用程序,这个应用程序并没有被设计成在 Microsoft Windows 中运行。Sendkeys 也无法将 PRINT SCREEN 按键 {PRTSC} 发送到任何应用程序。
SendKeys 语句示例
本示例使用 Shell 函数来运行 Microsoft Windows 所附的计算器程序;然后使用 SendKeys 语句来按下计算器的某些数字键,最后退出计算器。(若要观察示例运行过程,可将示例粘贴到过程中,再运行过程即可。因为 AppActivate 会将焦点转移到计算器应用程序,故本示例不能以单步方式来运行。)。Dim ReturnValue, I
ReturnValue = Shell("Calc.EXE", 1) ' 运行计算器。
AppActivate ReturnValue ' 激活计算器。
For I = 1 To 100 ' 设置计数循环。
SendKeys I & "{+}", True ' 按下按键给计算器
Next I ' 将所有 I 值相加。
SendKeys "=", True ' 取得总合。
SendKeys "%{F4}", True ' 按 ALT+F4 关闭计算器。
照搬的东西不值钱
'设置ListView1控件的查看方式为:3
'设置整行选择属性
'设置网络行
Dim i As Long
Dim lvItem As ListItem
For i = 1 To 10
Set lvItem = ListView1.ListItems.Add(, , "姓名")
lvItem.ListSubItems.Add , , "性别"
Next
End SubPrivate Sub ListView1_Click()
bolFlag = Not bolFlag
ListView1.SelectedItem.Selected = bolFlag
End Sub
'设置ListView1控件的查看方式为:3
'设置整行选择属性
'设置网络行
Dim i As Long
Dim lvItem As ListItem
For i = 1 To 5
Set lvItem = ListView1.ListItems.Add(, , "姓名")
lvItem.ListSubItems.Add , , "性别"
Next
End SubPrivate Sub ListView1_Click()
bolFlag = Not bolFlag
If lngRow = ListView1.SelectedItem.Index Then ListView1.SelectedItem.Selected = bolFlag
lngRow = ListView1.SelectedItem.Index
End Sub修改一下,这回没问题了~~