以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教两个关于窗口控制的小问题!  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=35619)

--  作者:ericsky
--  发布时间:2013/6/28 15:45:00
--  请教两个关于窗口控制的小问题!
1、模式窗口中,设置一个 【关闭(&E)】的按钮来执行关闭窗口功能。此时如果窗口的 显示控制框 = true,则ALT +E 快捷键有效,反之,则无效。是否正常?
2、在窗口中有若干个控件,如果想利用键盘的上下方向键上下选择控件,该如何通过keydown事件设置代码?就像tab功能键一样,但是tab键是单向的,如何设置成双向移动选择?
请老师指点!谢谢!


--  作者:Bin
--  发布时间:2013/6/28 16:03:00
--  
1.判断一下 e.Form.baseform.ControlBox 即可

2.根据KEYDOWN获得当前元素的 baseControl.TabIndex  然后循环获得下一个TabIndex=这个控件的TabIndex+1的控件再选中它即可.

--  作者:ericsky
--  发布时间:2013/6/28 16:25:00
--  
谢谢bin老师,关于第一个问题是我没有表达清楚,我的问题是:
设置了一个模式窗口,并且显示控制框属性设置为false,再设置了按钮【关闭】,并且加上(&E)的快捷键设置。
此时,快捷键ALT + E 是无效的。只有回过头来,把窗口的显示控制框属性设置为true,快捷键才有效。
但是,通过您的提醒,我还是解决了问题,就是不知道所以然。

关闭按钮代码如下:
e.Form.baseform.ControlBox = True
e.form.Close


--  作者:ericsky
--  发布时间:2013/6/28 17:10:00
--  
谢谢bin老师,分享一下第二个问题的代码,挺好用的,特别是针对大量的窗口数值录入
Select Case e.KeyCode
    Case  Keys.PageDown
        Dim int As Integer = e.Sender.basecontrol.tabindex
        For Each cnt As WinForm.Control In e.form.Controls
            If cnt.basecontrol.tabindex = int + 1 Then
                cnt.Select()
                Exit For
            End If
        Next
    Case  Keys.Pageup
        Dim int As Integer = e.Sender.basecontrol.tabindex
        For Each cnt As WinForm.Control In e.form.Controls
            If cnt.basecontrol.tabindex = int - 1 Then
                cnt.Select()
                Exit For
            End If
        Next
End Select

--  作者:lsy
--  发布时间:2013/6/28 17:20:00
--  

不是吧?方向键本来就很管用的,用不着上下翻页键。


--  作者:ericsky
--  发布时间:2013/6/28 17:30:00
--  
我这里,方向键是一个字符一个字符的移动,碰到长文本或者长数值,上下移动很慢。