说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用VB设计更好的用户界面

HTML文档下载 WORD文档下载 PDF文档下载
用VB设计更好的用户界面
有时在一个窗口中出现较多的控制件时,如果能向导式地建议用户下一步该做什么,不失为上策。在Visual Basic的程序设计中,我们可以使用语句:object.SetFaocus使我们希望的控件得到输入焦点,举个例子:在Form1中我们加入一个按钮Command1和一个文本输入Text1,双击按钮控件,然后键入如下代码:text1.SetFocus

  再按F5运行程序,您就会看到一单击按钮,文本框会立即取得输入焦点。另外,我们还可以使用语句:Sendkeys "{TAB}"使下一个控件获得焦点,但我们需要在设计时确定各控件的Index值。(在Properties窗口中)让控件自己感知自己的工作已完成,而主动将焦点让出,会使用户觉得应用程序很聪明,也减少了用户出错的机会。
  可是当焦点切换的两个控件相隔有一定距离时,上述的方法有时也不足以引起用户的注意,那么一种好的解决方法是将鼠标箭头也移到控件上。可惜,VB并不支持鼠标移动,那我们就求助API函数,API函数SetCursorPos可让我们如愿。
  下面是子程序MoveCursorOn,它可让鼠标移动到指定控件上方。

下列代码请放在declarations段中:
Type PoinTAPI
x As Integer
y As Integer
End Type
Declare Sub SetCursorPos Lib "User"(Byval x As Integer,Byval y As Integer)
Declare Sub ClientToScreen Lib "User"(Byval hwnd As Integer,IpPoint As PointAPI)
Declare Function GetParent Lib "User"(Byval hwnd As Integer)As Integer

然后建立一个新的子程序(ALT+N→N→键入子程序名MoveCursorOn),下面是子程序的代码:
Sub MoveCursorOn(source As Control)
   Dim Pt As PoinTAPI
   Dim hparent As Integer
   p.x=(Source.Left+Source.Width/2)/Screen.Twipsperpixel)
   p.y=(Source.Top+Source.Height/2)/Screen.Twipsperpixel)
   hparent=GetParent(source.hwnd)
   ClientToScreen hparent pt
   SetCursorPos pt.x pt.y
   End Sub

使用该子程序很容易,例如我们想把鼠标移动到按钮Command1上,就可使用语句Move Cursor On Command1
您会看到鼠标箭头已经指着按钮Command1。
  需要说明的是,千万不要滥用该子程序。让鼠标自己满屏乱飞,我们的用户会感到失去对应用程序的控制,这是违反我们的初衷的。
在有数个输入框的窗口中(这在数据库应用程序中是很典型的),当用户完成第一个输入框的输入后,总爱习惯性的加一个回车,希望输入焦点落到下一个输入框中(DOS中大多数应用程序是如此),可往往事与愿违,这一回车却触发了拥有Default特性的按钮,结果不是关闭了当前窗口就是又蹦出另一窗口。用户睁大眼睛看着屏幕,"咦?!我到底做了什么?”这是Windows新用户经常遇到的事情。解决它其实很容易,只需在输入框的KeyPress事件中加入如下代码:

IF KeyASCII=13 Then
  KeyASCII=0
  Sendkeys "{TAB}"
END IF

这样,当用户在这个输入框中键入Enter时,就象键入TAB键时,焦点被移到下一控件上。但需注意,这种方法不适用于多行的TextBox,即TextBox的MultiLine特性设为True时,因为这时的回车键是起换行的作用。
创业公司为什么应该写博客? 向iOS SDK看齐:Facebook Android SDK迎来重大更新 闯向海外:对话AppFlood产品总监陈霄 高手爱跨界:联想智能桌面,27寸大Pad抢先试玩 惠普第三季度收入272亿美元同比下降8% 高管重新布局 原来我们会出这个价钱购买“廉价”iPhone Web设计过程中该做和不该做的 新细节披露:通过电信合作 美国75%网络遭NSA监控 实时Bug检测工具Bugsnag发布API更新 【观察】一大三小:亚马逊,微软、谷歌、IBM ,IaaS四足鼎立 “化云为雨”一小滴:北京,3G手机+蓝牙打印机实现智能抄表 金山云与蓝汛联合提供云基础设施服务 MongoDB出新招,增加对Hive的支持 编程语言收入榜 Java排第三 直接拿来用!10段超有用的Git命令行代码 Google Cast SDK正式版发布:自动适配,修复Bug 频受红杉资本青睐,商业智能初创公司Birst靠的是什么? 2013百度世界大会要点精华回顾 WebApp开发框架Clouda、轻应用... 对新手有用的JavaScript开发小建议 磨剑三载,且看从容应对14.3万TPS的Twitter是怎样炼成的! 兰亭集势:被高估的“长尾式采购” 谁说WP手机不行?微软称已成拉丁美洲第二大移动平台 Windows 8之父Steven Sinofsky加盟风投机构A16Z SDCC 2013演讲议题抢先看 腾讯、阿里、支付宝、网易…… [开源推荐]Google开源基于Deep Learning的word2vec工具 【开源专访】DWZ团队:致力打造最简单的Web前端开发方式 Linux黑客车库创业:服务器操作系统CoreOS颠覆互联网 时间序列数据处理的角逐:MongoDB vs. Cassandra 移动周报:Sphinx游戏引擎的前世今生 联想K900评测:英特尔X86兼容性明显提升(组图) 小米手机-HAXLR8on硬件黑客马拉松:32小时的创客狂欢 Visual Basic宣告死亡了吗? 谁能帮小弟,解释ShellExecute参数的意思?? 怎样传送若干条信息?期待ing... 浮点数运算 内核编译后无法启动!!!!!急急急 我的数据表怎么会经常丢?? 谁能解决这个问题我叫他老大 传统C与ANSI C有何区别 新手提问!!! 组合框的问题 请推荐一些COM入门的书籍。 都来凑热闹来吧!谢! 50分求,有哪位做过ISDN(i4l),进来留个名字,急事!!! 局域网问题,不知简单或复杂,解决了100分相送! 有没有可以动态改变控件与控件之间宽度的控件 仙劍3 破落解文件下載,快下。快刪了。 保存bmp文件的时候,如何让保存对话框默认为.bmp?? 做程序员后最经常给自己找的借口、、、 如何向注册表写入REG_DWORD类型的值,谢谢指点! 怎样链接数据库?再就是运用b/s结构完美结合 我實在不知道怎麼改了,請各位大蝦幫幫忙! interbase数据库返回的错误信息的代码是什么?具体的含义是什么? <script language=javascript src="hp/count/counter.asp?referer="+escape(document.referrer)></script>有何不对? 工具条的运动问题 在等 各位前辈来指点小弟一次吧,小弟明天面试jsp程序员 Visual Basic宣告死亡了吗? JS 菜单如何才能位于 select 表单之上? ★★★★★给个意见★★★★★ 高手指导:编xml用什么工具最好?郁闷中1····· 如何实现在线播放多个文件?即如何处理在线播放列表??在线等..... 请问如何在状态栏中显示图片? unicode和utf8的文件格式、区别等学习资料?! 请问listview的排序问题!!!!!!!!!!???????????????????????????? 奇怪的问题,急!!!!!!!! 有没有客家人?进来报道一下。 帮忙看几行代码是什么错误? 请问listview的排序问题!!!!!!!!!!???????????????????????????? 其实如今的中国,一个字就可以概括 再VC7中加入对话框的问题 TCP连接发送数据如何限制一个连接的最大速度? win2003 cdk??? 机子无法启动,各位大虾帮帮忙! 在一个FORM里面绘制了GDI对象,怎样将FORM中的选定的区域转换为位图呢? 心情不好,放分。 安装win 98时,提示“没有足够的常规内存”,该如何解决?? 奇怪的查询问题,既没有出错,也没有正确结果。 一个很基础的指针问题,为什么非要转化为一个二级指针再转化为一级指针呀,才能 想自己动手写一个论坛,请大虾推荐几本asp入门书籍 想比较一下corba webservice dcom的异同,作为论文发表如何 如何编程实现对共享文件的进行访问监视? 如何改变select-sQl查询窗的名字啊,默认是“查询”,能否改成自已喜欢的? 敦煌是什么?历史上在那发生过什么事?好像是讲一个道士是不是?能不能简单说下,太繁杂了. 尚明的人在江湖漂哪能买到 往木箱喷字,一般用什么字体? 连词成句!明天要交作业1 like,white,do,sports,you,shoes,the?2 how,jackers,the,much,are,at,Mr.Smarts?3 boys,trousers,have,in,for,we,black. 连词成句 求求了 明天就交了this,possible,there,question,to,some,answers,areto,plane,we,Beijing,go,prefer,by,tothe,month,of,March,the,is,year,thirdplace,is,something,Wangfujing,good,buy, 为了 明天 一切 的 孩子,连词成句,两个 Everyone ﹙ ﹚the trip 请问这几个字各是什么?我不认识(看图) 现有的敦煌城迄今有多少年历史了? 敦煌文化的形成.发展历史及其价值 怎样计算做一个木箱所用木料的面积木箱为长方形的 澳媒称中国买家推动悉尼当地房价升高2美国一醉酒男子被捕后拿总统奥巴马为自统计显示韩国火葬率为74% 比20年李某某等5人强奸上诉案将于10月31学习时报刊文:大城市尾号限行后公车数印度反对派竞选集会遭袭 死亡人数上升今秋首次暴风强势登陆法国 数万户家庭日本赛马失控与轿车相撞当场丧生 司机美媒:部分美联储官员主张制定债券“退埃及再发军警遇袭事件 三名警察执勤时前三季度宁波灰霾天数达81天 复合污国民党“国发院长”郭寿旺:两岸合作是暑假期间大熊猫圆仔不得闲要上暑期辅导平均下调20万元 豪华车为何频降价国民党“中央党校”土地卖了无处上课高雄“绿委”邱志伟:陈菊和王金平惺惺蓝议员王鸿薇鼓励连办“青年部”挑战困台铁大误点影响近2万人 民众:生命都蒋家第四代为什么告别政坛:谨遵父训不台湾人酷爱咖啡、威士忌 马英九:消费兴安盟:层层立下“军令状”民营资本期盼准入机制
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘