关于TextBox中光标的问题,谢谢

mmmwwc 2007-08-07 09:12:25
本人刚接触vb.net,有个问题想请教,通过一个简单的例子表述下这个问题。

窗体中有3个控件,TextBox1、Label1、Button1。在TextBox1输入检索条件,调用一个判断TextBox1中光标是否消失的方法;如果光标消失(即用鼠标点击窗体中其他地方),则根据TextBox1中的内容在数据库中检索;如果检索成功,将结果显示在Label1中,如果检索不成功,弹出一个messagebox的提示信息。Button1的作用是退出窗体。

现在存在这样一个问题,如果我在TextBox1输入的检索条件无法检索成功,会弹出一个messagebox的提示信息(前面已经提过),我点击ok将其取消后,希望点击Button1退出此窗体。但在此时,会认为我点击Button1的动作是在取消TextBox1中的光标,也就是说,我每点击一次Button1,便会弹出这个messagebox的提示信息,而无法退出。

不知道我表述的是否清楚,希望有前辈可以帮助,谢谢!

...全文
407 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2007-08-20
  • 打赏
  • 举报
回复
应该用 Validated 事件,仅在本窗体内转移焦点时触发,弹出 MsgBox 不会触发
ilost1013 2007-08-08
  • 打赏
  • 举报
回复
同意楼上
octopus1 2007-08-08
  • 打赏
  • 举报
回复
在Textbox1的失去焦点事件中添加如下代码:
If Me.Button1.Focused Then
Exit Sub
else If
执行查询代码
end if
mmmwwc 2007-08-08
  • 打赏
  • 举报
回复
谢谢前辈,我回程序中再看看
mmmwwc 2007-08-08
  • 打赏
  • 举报
回复
回jaty018() ,我并没有TextBox1得到焦点的时间,它得掉焦点是通过鼠标实现的,因此貌似不可行。不过通过你的提示,我好像有了新的思路,去尝试下。
mmmwwc 2007-08-08
  • 打赏
  • 举报
回复
回ssdut_nowind() 等几位提出相同解决方案的朋友
button1是我为了简便提出来的,在实际问题中这个按钮被locked,我从属性中无法看到这个按钮的name。
这个按钮触发的事件是Private Sub FormSSLC0010_F12Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.F12Click,那么,我是不是有其它的写法来实现你们的解决方案。
mmmwwc 2007-08-08
  • 打赏
  • 举报
回复
回神中神:
1.在点击messagebox的ok将其取消后,将焦点设置回了TextBox1
Me.TextBox1.Focuse()
2.验证TextBox1失去焦点的事件正确,在其失去焦点的事件中,调用了CheckClient() 进行检索。如果检索成功CheckClient() 则输出结果,如果检索失败CheckClient() 返回给失去焦点的事件LostFocus一个False,输出错误信息并将焦点设置回TextBox1
If CheckClient() = False Then 。
SSMessage.ShowInfo("MSSLC002")
Me.TextBox1.Focus()
End If
3.代码并不存在其它问题,现在的问题就在于,由于Button1存在焦点(被locked无法修改),那么当我在点击Button1进行退出时,会认为我的焦点现在在Button1上也就是说TextBox1的焦点失去,因此便去执行失去焦点的事件,而程序并没有走到点击Button1的事件。
ssdut_nowind 2007-08-08
  • 打赏
  • 举报
回复
对啊,如果没有代码把焦点设置回去,焦点不会回到Textbox1的啊。
也许你是想在输入非法数据的时候自动把焦点设置回了Textbox1,不过你可以在Textbox1的lostfocus事件最开始加个判断:
If Me.Button1.Focused Then
Exit Sub
End If
jaty018 2007-08-08
  • 打赏
  • 举报
回复
定义一全局变量 dim x as integer
在TestBox1得到焦点的事件中:
x=1
在TestBox1失去焦点的事件中:
if x=1 then
'到数据库查询的代码
x=0
end if

就可以实现了.
mmmwwc 2007-08-08
  • 打赏
  • 举报
回复
我去试一下,谢了先
snto 2007-08-07
  • 打赏
  • 举报
回复
1.检索的代码中是否有将TextBox1设置焦点的命令,如TextBox1.Focus()
2.验证TextBox1失去焦点的事件是否正确,是否有1的代码
3.列出你认为可能引发异常的详细代码

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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