VB.Net FileName is Used Before Warning

I am trying to work with two radio buttons in a simple VB.net app that allows a user to select and open a PDF using the Process object. One PDF will be assigned to each radio button. The code is shown below. I get the following warning: "Variable ‘fileName’ is used before it has been assigned a value. A null reference exception could result at runtime."

Please help resolve the error.

This is not homework for a class. It is self-study using books.

Code:
Public Class Form1

    Private Sub OpenFile(ByVal AFileName As String)
        Dim psi As New ProcessStartInfo()

        psi.UseShellExecute = True
        psi.FileName = AFileName
        Process.Start(psi)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim fileName As String
        If RadioButton1.Checked = True Then
            fileName = "c:\test_3\johnson.pdf"
        End If
        If RadioButton2.Checked = True Then
            fileName = "c:\test_3\ross.pdf"
        End If
        MessageBox.Show("File name is: " + fileName)
        OpenFile(fileName)
    End Sub
End Class

Open in new window


The warning occurs on the following line:
MessageBox.Show("File name is: " + fileName)

Open in new window

Mark01Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Ryan ChongBusiness Systems Analyst , ex-Senior Application EngineerCommented:
I get the following warning: "Variable ‘fileName’ is used before it has been assigned a value. A null reference exception could result at runtime."
reason being neither RadioButton1 nor RadioButton2 are possibly not checked by default.
hence, try build a logic to handle that case, like below:

Public Class Form1

    Private Sub OpenFile(ByVal AFileName As String)
        Dim psi As New ProcessStartInfo()

        psi.UseShellExecute = True
        psi.FileName = AFileName
        Process.Start(psi)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim fileName As String
		Dim isTrue As Boolean
		
        If RadioButton1.Checked = True Then
            fileName = "c:\test_3\johnson.pdf"
			isTrue = True
        End If
        If RadioButton2.Checked = True Then
            fileName = "c:\test_3\ross.pdf"
			isTrue = True
        End If
		
		If isTrue Then
			MessageBox.Show("File name is: " + fileName)
			OpenFile(fileName)
		End If
		
    End Sub
End Class

Open in new window

Éric MoreauSenior .Net ConsultantCommented:
instead of adding another variable (isTrue), I would simply test the existing one:
if string.IsNullOrWhiteSpace(filename) then
   MessageBox.Show("file name is not set!!!")
else
   MessageBox.Show("File name is: " + fileName)
   OpenFile(fileName)
end if

Open in new window

BillSoftware EngineerCommented:
give filename an initial  value when declaring it,  as in

Dim sFilename as string = ""

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Mark01Author Commented:
@Eric: I get the following error with your code: 'IsNullOrWhiteSpace' is not a member of 'String'.

Code:
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim fileName As String

        If String.IsNullOrWhiteSpace(fileName) Then
            MessageBox.Show("file name is not set!!!")
        Else
            MessageBox.Show("File name is: " + fileName)
            OpenFile(fileName)
        End If

        If RadioButton1.Checked = True Then
            fileName = "c:\test_3\johnson.pdf"
        End If
        If RadioButton2.Checked = True Then
            fileName = "c:\test_3\ross.pdf"
        End If

        MessageBox.Show("File name is: " + fileName)
        OpenFile(fileName)

Open in new window

The error is caused by:
        If String.IsNullOrWhiteSpace(fileName) Then

Open in new window

@Ryan: Your code does not resolve the warning.
@mybosssucks: Your code worked!
Mark01Author Commented:
Thank you Eric, myboss and Ryan.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic.NET

From novice to tech pro — start learning today.