以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]密码框 显示图片的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=72868)

--  作者:dxjwlf
--  发布时间:2015/8/7 18:50:00
--  [求助]密码框 显示图片的问题
一个窗口,一个文本框,用于输入密码。两个图片框,一个正确,一个错误。
要实现,输入密码正确时,就显示 正确的图片框。  结果 为什么 只能显示正确的图片,输入错误时,错误的图片却不显示。

我在窗口 afterload 写如下代码 : 
e.Form.Controls("PictureBox1").Visible = False
e.Form.Controls("PictureBox2").Visible = False

在value changed  写入:
Dim mm As WinForm.TextBox = e.Form.Controls("密码")
If  mm.Value = "123456" Then
    e.Form.Controls("PictureBox1").Visible = True
    e.Form.Controls("PictureBox2").Visible = False
End If
If mm.Value <> "123456" Then
    e.Form.Controls("PictureBox1").Visible = False
    e.Form.Controls("PictureBox2").Visible = True
End If


--  作者:有点蓝
--  发布时间:2015/8/7 19:10:00
--  
应该不会啊
ValueChanged是要光标离开文本框才执行的

--  作者:有点蓝
--  发布时间:2015/8/7 19:13:00
--  
Dim pbx AS WinForm.PictureBox
pbx = Forms("窗口1").Controls("PictureBox1")


你用

If  mm.Value = "123456" Then
pbx.Image = GetImage("正确.bmp")
else
pbx.Image = GetImage("错误.bmp")
end if

--  作者:大红袍
--  发布时间:2015/8/7 20:30:00
--  

写到TextChanged事件。

 

mm.Value 改成 mm.Text


--  作者:dxjwlf
--  发布时间:2015/8/7 21:22:00
--  
很遗憾,两个人的回复,都没有解决问题。。不过感谢了


--  作者:有点蓝
--  发布时间:2015/8/7 21:27:00
--  
不会吧,传示列上来看看
--  作者:dxjwlf
--  发布时间:2015/8/7 21:39:00
--  
反复 测试 无意中得到正确答案: 感谢有点蓝,你的思路。代码简化了


Dim mm As WinForm.TextBox = e.Form.Controls("密码")
Dim pbx As WinForm.PictureBox = e.Form.Controls("PictureBox1")
Select Case mm.Value
    Case mm.Value Is Nothing
        pbx.Visible = False
    Case mm.Value = "123456"
        pbx.Visible = True
        pbx.Image = GetImage("对勾.png")
    Case mm.Value <> "123456"
        pbx.Visible = True
        pbx.Image = GetImage("关闭.png")
End Select

--  作者:dxjwlf
--  发布时间:2015/8/7 21:44:00
--  
 Case mm.Value Is Nothing
        pbx.Visible = False                       这一句有没有意义,值得思考,不过太累了。不想在弄了。 打开窗口时,密码就是空值。
我在窗口 afterload 写如下代码 : 
e.Form.Controls("PictureBox1").Visible = False  好象没有必要在加上这一句。

  在value changed  写入:
Dim mm As WinForm.TextBox = e.Form.Controls("密码")
Dim pbx As WinForm.PictureBox = e.Form.Controls("PictureBox1")
Select Case mm.Value
       Case mm.Value = "123456"
        pbx.Visible = True
        pbx.Image = GetImage("对勾.png")
    Case mm.Value <> "123456"
        pbx.Visible = True
        pbx.Image = GetImage("关闭.png")
End Select

--  作者:dxjwlf
--  发布时间:2015/8/7 21:48:00
--  
新的问题出现:  如果你输入的是数字,运行正确。 如果你输入的是 km123456 这时弹出: 从字符串“km123456”到类型“Boolean”的转换无效。 无语
--  作者:dxjwlf
--  发布时间:2015/8/7 22:05:00
--  
正确代码:
窗口 afterload 
e.Form.Controls("PictureBox1").Visible = False  

value changed 写入 :
Dim mm As WinForm.TextBox = e.Form.Controls("密码")
Dim pbx As WinForm.PictureBox = e.Form.Controls("PictureBox1")

If  mm.value = "gs123456" Then
    pbx.Visible = True
    pbx.Image = GetImage("对勾.png")
Else
    pbx.Visible = True
    pbx.Image = GetImage("关闭.png")
End If