【问题标题】:InputBox Cancel输入框取消
【发布时间】:2010-06-26 11:25:13
【问题描述】:

我创建了一个输入框来输入用户名,但卡在取消按钮上

Private Sub Form_Load()
fsUserName = UCase(InputBox("Please Enter your name.", "User Name", _
"dc"))

If fsUserName = "" Then
MsgBox "No name Entered." & Chr(13) & Chr(13) & _
"You must enter a name.", vbExclamation, "ERROR"
Form_Load
ElseIf VarType(fsUserName) = 0 Then 'If cancel clicked
cmdQuit_Click

End If

还有一种方法,当单击表单上的 X 按钮时,它会执行 cmdQuit_Click ,这样如果用户单击命令按钮 Quit 或 X ,就会运行 Quit 脚本。在退出脚本中有消息框和清理。

【问题讨论】:

    标签: vb6


    【解决方案1】:

    您可以使用StrPtr() 来检测是否点击了取消;

    Dim fsUserName As String
    
    fsUserName = InputBox("Please Enter your name.", "User Name", "dc")
    
    If (StrPtr(fsUserName) = 0&) Then
        MsgBox "Cancelled or X clicked"
    ElseIf fsUserName = "" Then
        MsgBox "No name Entered." & vbCr & "You must enter a name.", vbExclamation, "ERROR"
    Else
        fsUserName = UCase$(fsUserName)
        MsgBox fsUserName
    End If
    

    如果您想在表单卸载时执行某些操作,您可以使用Form_Unload 事件或更好的Form_QueryUnload 事件,该事件在实际卸载之前触发并允许您取消它。
    它还会告诉您为什么要卸载表单(如果单击红色 X,UnloadMode 将为 0)

    使用“Unload Me”将引发这两个事件。

    编辑:像这样在Form_Load 中调用Form_Load 最终会填满堆栈,最好使用循环来查找丢失的用户名。

    【讨论】:

    • 谢谢亚历克斯,这个解决方案对我来说很完美。如果你也能指导我循环部分,我会很高兴。再次感谢。
    【解决方案2】:

    Alex 使用 StrPtr 的回答,我认为它可以像宣传的那样工作,就它而言是好的,但更好的建议 (IMO) 是完全避免 InputBox。您可以使用对话框样式的表单、文本框和几个按钮轻松创建自己的表单,如果您愿意,还可以使用图标。

    自行开发可为您提供完全的灵活性和可预测性,一旦拥有它,您就可以在未来的任何项目中使用它。

    【讨论】:

    • VB6 的 InputBox() 函数是等效 API 调用的一个非常薄的包装器,它将 Cancel 记录为返回一个空指针。在 InputBox 有用的极少数情况下,检测技术很好 - 不存在可靠性问题。但是我同意 InputBox() 对于普通用户将与之交互的生产程序来说是一个糟糕的选择。
    • Jim 非常好意地建议创建我自己的自定义对话框比使用输入框要好得多。对话框可以看起来更专业。谢谢
    【解决方案3】:

    Excel InputBoxApplication.InputBox 是不同的函数。

    Sub GetValue2()
        Dim Monthly As Variant
        Monthly = Application.InputBox _
            (Prompt:="Podaj wysokość miesięcznej wypłaty:", _
             Type:=1)
        If Monthly = False Then Exit Sub
        MsgBox "Zarobki rocznie: " & Monthly * 12
    End Sub
    

    【讨论】:

      【解决方案4】:

      试试这个...

      Name = Application.InputBox("请输入名称")

      如果名称 = "False" 那么

      MsgBox "你的消息在这里"

      退出子

      如果结束

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-29
        • 1970-01-01
        • 1970-01-01
        • 2019-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多