如何区分 InputBox Cancel 和 OK 按钮?

Posted

技术标签:

【中文标题】如何区分 InputBox Cancel 和 OK 按钮?【英文标题】:How to distinguish InputBox Cancel from OK button? 【发布时间】:2013-11-09 20:43:22 【问题描述】:

快速提问:

我在我的 C# 代码中使用 Microsoft.VisualBasic.Interaction.InputBox 来允许用户将网站添加到列表中,但我不希望他们输入空字符串,因此我会弹出错误消息以防万一。但是,如果用户按下“取消”,也会弹出错误,这是我不希望发生的。

阅读上面的文档说按“取消”会返回一个空字符串,因此它会触发错误。有没有办法仍然定义用户是用空字符串按下“okay”还是“cancel”?

提前致谢,

-彼得

【问题讨论】:

别这么认为,输入框相当有限。如果您需要正确实施,您应该编写自己的对话框。 【参考方案1】:

你不能这样做。来自MSDN

如果用户点击取消,则返回一个零长度的字符串。

    Dim result As String = Microsoft.VisualBasic.InputBox("Enter some text")
    If result.Length > 0 Then
        Debug.WriteLine("Something entered and OK Clicked")
    Else
        Debug.WriteLine("Cancel Button Clicked OR Blank String Entered and OK Clicked")
    End If

最简单的解决方案就是创建自己的简单输入表单并测试DialogResult

【讨论】:

不幸的是他们没有在这里保留original VB behaviour。 DOT.NET 包装器将输出初始化为 "" 而不是 null。如果按下 Okay,则将 TextBox 的内容分配给 this.Output(可能是一个空字符串“”),如果 Cancel 则不分配任何内容。因此,您无法区分这两种结果。有些人将默认值初始化为“”作为解决方法。【参考方案2】:
string a;
            a = Interaction.InputBox("message", "title");
            if (a.Length > 0)
            
                comboBox2.Items.Add(a);
                // ok
            
            else
            
                // cancel
            

【讨论】:

以上是关于如何区分 InputBox Cancel 和 OK 按钮?的主要内容,如果未能解决你的问题,请参考以下文章

Fmx在android下InputBox输入框点击Cancel取消按钮后报异常

java里的confirm框有办法禁用关闭按钮或者将点cancel取消和点X关闭区分开来吗?

如何更改 Xamarin 表单中的 DatePicker Ok 和 Cancel 按钮文本?

按下 QDialog Cancel 或 OK 时如何调用函数?

vba inputBox:如何用空文本框区分“取消”和“确定”之间的区别

无法正确取消 Application.Inputbox