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

用Visual Basic设计更好的用户界面

HTML文档下载 WORD文档下载 PDF文档下载
用Visual Basic设计更好的用户界面
有时在一个窗口中出现较多的控制件时,如果能向导式地建议用户下一步该做什么,不失为上策。

在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时,因为这时的回车键是起换行的作用。
触控陈昊芝:“好声音”标王对移动游戏未来的预测 Office将更强大:微软正开发Office Reader和Office Lens 百度技术专家详解Clouda 并称计划推出相应UI解决方案 少年才俊:看IT界8个不到20岁的科技公司创始人 Oracle与Freescale展开深度合作,Java或将一统物联网? 探秘Google新搜索引擎算法Hummingbird的16个疑惑 如何在开发项目里进行自我激励! 或许很受用:苹果、谷歌和亚马逊等公司的14个怪异面试题 12款不容错过的新款jQuery插件 技术开发者如何看实时Web App开发框架? 高薪技术排行:大数据居首,苹果相关次之,Java、C等相去甚远 谷歌开发网络跟踪新技术:AdID将取代第三方Cookie 穿在脚上的苹果?苹果聘用Nike设计主管Ben Shaffer 七款Debug工具推荐:iOS开发必备的调试利器 六年亲历,见证中国大数据技术与应用时代的到来 Mailbox:日支撑过亿信息数据库的性能调优及集群迁移 PayPal前CTO 在美国改变世界的乌克兰犹太人 放弃Bootstrap&Foundation,迎接Semantic UI? 一键分享:iOS版Google+发布SDK InMobi杨娟:中国移动游戏如何挑战全球? Adobe再遭APT攻击:数十G源代码及290万用户信息失窃 程序员,如何在工作中崭露头角? 国内外三个不同领域巨头分享的Redis实战经验及使用场景 这是一场潜在的战争:谷歌与Facebook、苹果在搜索上的博弈 设计新闻类网站需要注意的关键点:移动友好、宽带…… 直接开始用:5个免费的在线思维组织工具 招聘开发者常见的九大误区 开源影响销售,维护赞助商? 盘点黑客攻击途径:最常用的7个策略及简单的防护方法 专访AngularJS框架创始人Misko Hevery:让Web开发更便捷 果粉的又一个节日:新iPad或于10月22日发布 javascript 中的转义字符是什么? 请教SSI 请问有没有办法可以将10M大小的文件用软盘拷到WINDOWS2000中???? 数据库数据导出, 怎么能快点? QQ密码存放在哪? ADO的Query控件 能告诉怎样实现2000服务器的电话回拨吗~~ 初级问题之三,关于DataWindow Error 灌水乐园???? 100分答谢高手!-------谁有写代理服务器的经验呢? 帮一下我好么? 救命!!pb6.5是不是不支持oracle的blob类型???? 去掉引导信息??? 为什么我用MFC写的单文档程序在别人的没装VC++的机子上不能运行? 用户登录是密码存放在哪个文件夹里? (简单问题) 请问这个程序为什么抛出这样一个违例??? 问题一个,请教! 增值合订本出的我心不甘 我又来提问了~前天复习是发现一道很怪异的题目~ 用activemovie控件打开一个URL,用哪个函数? 如何去掉ACTIVE MOIVE控件下面显示的几个键和进度条 c源程序。 >>>>高分求解!!!我在一个对话框中插入一个active report run time design,但程序运行时却不显示,在vb中却可以,如何解决这个问题?????? 关于sql server的安装 哪里有下载cc编译器的? 关于导出数据窗口数据的问题,明白人请进! delphi可不可以用于自动控制方面的开发呢 如何使对话框程序执行就让整个屏幕背景变黑色?? 想了解有关程序考试的一些情况? 不同系统就不可以直接电缆直接吗? 怎样使用PQMAGIC对硬盘进行调整分区 memory fault--core dumped的问题 有谁知道怎么解win98的开机密码? 用 procedure 与 trigger 、database link 能完成吗? flowerofwind,rjcludy()请回答 COM中的一个怪问题:我将::CoUninitialize();去掉后程序不出错,添上出现非法操作,是啥问题??? 请问?????? 如何在程序中播放rm格式的文件??? edit怎么用啊? JB6盘中不含 Borland Enterprise Server AppServer5.0,各位快载一个上去吧! 如何改变显示的分辨率? 那里有c#编译器免费下载?谢谢 如何在vc中播放rm格式的文件??? 那位大侠知道怎么创建并使用一个变量,每次只让一个进程访问???给个例子吧,大大大 大 delphi中怎么编写中断,获取外部设备传来的信息?急救!! 数值模拟与计算仿真,高手请帮忙! 请问:dos下图形放大算法或思路?还有.........(高手请进) 求教!!!!SOS!! --请问如何将一个BMP图形文件转成JPG图形文件,高分请教师--- 高分给出,win98的怪问题! 打印统计问题 请教 : html的javascript 中报错:document.Form1.client_name.value不是对象 VC++里面如何从文本文件中一行一行读取文件? 怎样用氟化钠制氟气如题 氟气的氧化性强还是硝酸的氧化性强? 在容积相同的两密闭容器A和B,保持温度为150度,同时向A容器中加入amol的HI,向B容器中加入bmol的HI a大于b当反应达到平衡后,谁用的时间长 为什么 氟气的实验室制法及检验、除杂求高手给出氟气的实验室制法的装置、严谨的操作次序、注意事项(如用什么方法收集氟气),以及如何检验收集到的气体是氟气.氟气中可能的杂质有什么?如 氟气的实验室与工业制法 已知函数f(x)=1+(x绝对值-x)/2 1,用分段函数的形式表示该函数.2,函数的值域 电解氟化钠溶液能否制氟气? 白炽灯泡的钨丝正常工作时温度可高达2000摄氏度左右(钨的熔点是3410℃),长期使用后,钨丝因升华而变细,导致导致灯丝电阻变什么,升华后的钨又什么使灯泡内壁变黑 已知函数f x等于x减一的绝对值,用分段函数的形式表示该函数. 随机变量X的概率密度为f(x)=2x, 0 钨、铜的熔点分别是3410℃、1084.5℃,估算最低再结晶温度,并选择再结晶退火温度 已知函数f(x)=绝对值x-1 -绝对值x+2 用分段函数表示 氟气与水的反应是什么?我在书上看到,氟气与氧气反应不仅仅生成氧气和氟化氢,还会生成双氧水等物质,这是怎么回事? 氟气和氯气是什么颜色的?氟气和氯气是什么颜色? 非晶体的熔点融化时的变化 氟气与水反应离子方程式是什么? 氟气是什吗颜色啊 非晶体到底有没有熔点? 氟气会和水反应吗? F2(氟气)有颜色不?如果有是什么颜色呢? 油酸甘油酯氢化方程式.牛人进 氟和氟盐是化工原料.由于氟气性质活泼,很晚才制取出来.第三问用电荷守恒来求氟离子的物质的量浓度为什么求不对?第四问为什么写两个反应式,不可以合在一起写吗 氟气有什么气味?就是氟气有什么味道 油酸甘油酯和氢气加成的化学反应方程式? 设随机变量X的概率密度为f(x)=1/π(1+x^2),(-∞ 金会和活泼的氟气反应吗 油酸甘油酯的硬化方程式要准确的!、、 氟气,臭氧哪个氧化性更强? “晶体有固定的熔化温度,非晶体只要吸热温度就会不断上升没有确定的熔点”这句话对不对? 函数y=x的绝对值+1的图像y=x+1的绝对值的图像与y=x+1的图像的关系 氟离子和氟气哪个氧化性强拜托了各位 谢谢简述理由 非晶体没有一定的熔点,就是说它熔化除了温度还有别的因素了?我有两个想法:1,非晶体熔化,除了温度以外还与比如形状,质量之类的有关,以至于每次熔化的温度都不太相同.如果是这样的话, 硬脂酸甘油酯碱性水解方程式 怎么证明双氧水具有氧化性 晶体有固定熔点是什么意思?指的是一开始融化的温度吗?非晶体没有固定熔点这句话怎么理解?能举个例子吗?还有图中的两个图像又该怎么理解?甲图像中的A处就是熔点吗?ABCD又分别指的是什 硬脂酸甘油酯 碱性水解方程式 氟气、氯气、氧气、液溴、碘、砹、SO3、HNO3、三价铁的氧化性比较 装氟气的集气瓶怎么这么奇怪这是装氟气的集气瓶.怎么集气瓶口上还有一个圆形的东西(淡黄色的),但是装其他气体的集气瓶都很正常 谁告诉我是怎么回事? 硬脂酸甘油酯在酸、碱环境下水解方程式最好可以手写传图! 氟和氧(点燃)哪个氧化性更强? 低温或常温下氟气为什麽可以装在合金瓶quick!please! 函数y=x的绝对值分之2的图像大致是什么样的.为什么. 5%的过氧化氢溶液和10%的过氧化氢溶液,5%的加了二氧化锰,能不能探究二氧化锰对反应速率的影响.. 在一定体积的容器中,加入I.5mol氙气和7.5mol氟气,于400摄氏度和2633kPa条件下加热数小时,然后迅速冷却到摄氏度,容器内处得一种无色晶体外,还余下4.5mol氟气,则所得无色晶体产物中,氙原子与氟 画出函数图像:y=x²-2,x∈Z,且x的绝对值≤2 二氧化锰是如何加快过氧化氢的反应速率的 氙和氟按一定比例混合,在一定条件下,可直接反应并达到平衡:Xe(气)+2F2===XeF4(气)+Q下列变化中既能加快反应速率又能使平衡向正反应方向移动的是:()A加压 B升温 C减压 D降温为什么B 制取二氧化碳的方程式 MnO2的用量对H2O2制氧的反应速率有影响吗?如果有,怎样影响 求化学. 取1摩尔氙气和3.5摩尔氟气于一密闭容器充分反应,后余下1.5摩尔氟气,同时生求化学. 取1摩尔氙气和3.5摩尔氟气于一密闭容器充分反应,后余下1.5摩尔氟气,同时生成白色固体,此白色 制取CO2的方程式 如何验证二氧化锰在过氧化氢制氧中只做催化剂?要具体的操作方法! 除了氟气,什么物质的氧化性最强. 氙与氟气反应生成什么 用氟化钙制氟气如题 氟气 氯气 溴单质 氧化性强弱比较是什么 函数f(x)=x^2-|x+a|为偶函数,求a的值.解开绝对值 二氧化锰为什么可以给过氧化氢当催化剂?要个具体点的 氧化性最强的物质是什么,注意了是物质 设|a|≤1,函数f(x)=ax^2+x-a,x∈[-1,1].证明|f(x)|
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn