关于焦点的问题,你帮忙看看

waterdragonfly 2004-07-28 02:59:34
1。有两个combobox控件是可以输入的,要求如果控件失去焦点时,就要检查控件里输入的内容是否合法,比如内容不能为空,否则,不允许失去焦点,我在程序里是在LostFocus事件里写的代码,不合法时,就用 当前控件.SetFocus方法,两个combobox是同样的要求。现在的问题是,当从一个内容为空的combobox里移开,然后点一下另一个初始为空的combobox,会发现光标一直在两个控件之间跳动,好像是两个控件都在争夺当前的焦点,请问怎么解决?
2。要求按钮无法得到焦点,当我点击一下按钮,执行完一定的操作后,要求把焦点设回原来那个在按钮之前拥有焦点的控件,请问如何实现?

在线等待中。
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoli1231 2004-07-28
  • 打赏
  • 举报
回复
只需要记住当前获得焦点的前一个控件就可以!
waterdragonfly 2004-07-28
  • 打赏
  • 举报
回复
第一个问题已经解决,谢谢几位,第二个问题,如果照大家所说,是不是意味着Form上的每一个控件在得到焦点时都要调用这个变量,来记住自己,那如果画面上空间很多的话,岂不是很麻烦?
戴纹 2004-07-28
  • 打赏
  • 举报
回复
可以用一个变量来标志是否正在某个控件中失去焦点,再进一步处理...
victorycyz 2004-07-28
  • 打赏
  • 举报
回复

1. 应该把你在lostfocus中的代码移到validate事件过程中。

2. 还是setfocus方法呀。只是,你需要用一个变量记录按钮得到焦点之前的那个控件。
TechnoFantasy 2004-07-28
  • 打赏
  • 举报
回复
Private Sub Combo1_Validate(Cancel As Boolean)
If Combo1.Text = "" Then
MsgBox "combo1 Input can't be null"
Cancel = True
End If
End Sub

Private Sub Combo2_Validate(Cancel As Boolean)
If Combo1.Text = "" Then
MsgBox "combo2 Input can't be null"
Cancel = True
End If
End Sub

这样就可以实现两个combo的不为空验证
TechnoFantasy 2004-07-28
  • 打赏
  • 举报
回复
你应该在Validate事件里面来判断比较好

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧