I have a simple windows application that pops up an input box for users to enter in a date to do searches.
How do I identify if the user clicked on the Cancel button, or merely pressed OK without entering any data as both appear to return the same value?
I have found some examples of handling this in VB 6 but none of them really function in the .NET world.
Ideally I would like to know how to handle the empty OK and the Cancel seperately, but I would be totally ok with just a good way to handle the cancel.
This question is related to
vb.net
Dim userReply As String
userReply = Microsoft.VisualBasic.InputBox("Message")
If userReply = "" Then
MsgBox("You did not enter anything. Try again")
ElseIf userReply.Length = 0 Then
MsgBox("You did not enter anything")
End If
Dim input As String
input = InputBox("Enter something:")
If StrPtr(input) = 0 Then
MsgBox "You pressed cancel!"
Elseif input.Length = 0 Then
MsgBox "OK pressed but nothing entered."
Else
MsgBox "OK pressed: value= " & input
End If
Why not check if for nothing?
if not inputbox("bleh") = nothing then
'Code
else
' Error
end if
This is what i typically use, because its a little easier to read.
You can do it in a simpler way using the DialogResult.cancel
method.
Eg:
Dim anInput as String = InputBox("Enter your pin")
If anInput <>"" then
' Do something
Elseif DialogResult.Cancel then
Msgbox("You've canceled")
End if
I like using the IsNullOrEmpty method of the class String like so...
input = InputBox("Text:")
If String.IsNullOrEmpty(input) Then
' Cancelled, or empty
Else
' Normal
End If
Guys remember that you can use the try catch end event
Dim Green as integer
Try
Green = InputBox("Please enter a value for green")
Catch ex as Exception
MsgBox("Green must be a valid integer!")
End Try
I know this is a very old topic, but the correct answer is still not here.
The accepted answer works with a space, but the user can remove this space - so this answer is not reliable. The answer of Georg works, but is needlessly complex.
To test if the user pressed cancel, just use the following code:
Dim Answer As String = InputBox("Question")
If String.ReferenceEquals(Answer, String.Empty) Then
'User pressed cancel
Else if Answer = "" Then
'User pressed ok with an empty string in the box
Else
'User gave an answer
Try this. I've tried the solution and it works.
Dim ask = InputBox("")
If ask.Length <> 0 Then
// your code
Else
// cancel or X Button
End If
1) create a Global function (best in a module so that you only need to declare once)
Imports System.Runtime.InteropServices ' required imports
Public intInputBoxCancel as integer ' public variable
Public Function StrPtr(ByVal obj As Object) As Integer
Dim Handle As GCHandle = GCHandle.Alloc(obj, GCHandleType.Pinned)
Dim intReturn As Integer = Handle.AddrOfPinnedObject.ToInt32
Handle.Free()
Return intReturn
End Function
2) in the form load event put this (to make the variable intInputBoxCancel = cancel event)
intInputBoxCancel = StrPtr(String.Empty)
3) now, you can use anywhere in your form (or project if StrPtr is declared global in module)
dim ans as string = inputbox("prompt") ' default data up to you
if StrPtr(ans) = intInputBoxCancel then
' cancel was clicked
else
' ok was clicked (blank input box will still be shown here)
endif
input = InputBox("Text:")
If input <> "" Then
' Normal
Else
' Cancelled, or empty
End If
From MSDN:
If the user clicks Cancel, the function returns a zero-length string ("").
Although this question is being asked for 5 years ago. I just want to share my answer. Below is how I detect whether someone is clicked cancel and OK button in input box:
Public sName As String
Sub FillName()
sName = InputBox("Who is your name?")
' User is clicked cancel button
If StrPtr(sName) = False Then
MsgBox ("Please fill your name!")
Exit Sub
End If
' User is clicked OK button whether entering any data or without entering any datas
If sName = "" Then
' If sName string is empty
MsgBox ("Please fill your name!")
Else
' When sName string is filled
MsgBox ("Welcome " & sName & " and nice see you!")
End If
End Sub
Source: Stackoverflow.com