2015-12-07 2 views
0

По какой-то причине, в то время как я называю конкретную форму в моей программе он приходит сForm.show() в VB.NET возвращении InvalidOperationException

Необработанное исключение типа «System.InvalidOperationException» произошло в CinemaBooking2. exe

Дополнительная информация: Произошла ошибка при создании формы. Подробнее см. Exception.InnerException. Ошибка: Преобразование из строки «» в тип «Целое число» недопустимо.

Но я не уверен, почему. Это только внезапно началось, и я не уверен, что это визуальная студия, или меня.

Это форма, которую она пытается нагрузка:

Imports System.IO 
Public Class MainMenu2 
    Dim intChildren As Integer = 0 
    Dim intStandard As Integer = 0 
    Dim intOAP As Integer = 0 
    Public intTotal As Integer = 0 
    Dim Reader As StreamReader 
    Dim Writer As StreamWriter 
    Dim booAdmin As Boolean 

    Private Sub BtnComingSoon_Click(sender As Object, e As EventArgs) Handles BtnComingSoon.Click 
     Me.Visible = False 
     frmComingSoon.Visible = True 
    End Sub 

    Private Sub BtnEdit_Click(sender As Object, e As EventArgs) 
     Me.Hide() 
     FrmNowShowing.Show() 
    End Sub 

    Private Sub FrmMenu_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

     Reader = New StreamReader("NowShowing.txt") 
     LblShowing1.Text = ("Now showing: " & Reader.ReadLine) 
     LblShowing2.Text = ("Now showing: " & Reader.ReadLine) 

     Reader.Close() 

     Reader = New StreamReader("Settings.txt") 
     booAdmin = Reader.ReadLine 
     Reader.Close() 

     If booAdmin = False Then 
      BtnRefresh.Hide() 
      BtnEdit.Hide() 
     End If 
    End Sub 

    Private Sub BtnBook_Click(sender As Object, e As EventArgs) Handles BtnBook.Click 
     Me.Hide() 
     FrmBookings.Show() 
    End Sub 

    Private Sub CmbChildren_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CmbChildren.SelectedIndexChanged 
     intStandard = CInt(CmbStandard.Text) 'Code for standard combo box 
     intTotal = intChildren + intStandard + intOAP 
     LblTotal.Text = ("Total: £" & (intChildren * 3.5) + (intStandard * 5.95) + (intOAP * 4.95) & " for " & intTotal & " People.") 
     Reader.Close() 

     If intTotal > 0 And intTotal <= 100 Then 
      BtnBook.Enabled = True 
     Else 
      BtnBook.Enabled = False 
     End If 

     Reader = New StreamReader("Settings.txt") 
     booAdmin = Reader.ReadLine 
     Reader.Close() 

     Writer = New StreamWriter("Settings.txt") 
     Writer.WriteLine(booAdmin) 
     Writer.WriteLine(intTotal) 
     Writer.Close() 
End Sub 

Private Sub CmbStandard_SelectedIndexChanged_1(sender As Object, e As EventArgs) Handles CmbStandard.SelectedIndexChanged 
    intStandard = CInt(CmbStandard.Text) 'Code for standard combo box 
    intTotal = intChildren + intStandard + intOAP 
    LblTotal.Text = ("Total: £" & (intChildren * 3.5) + (intStandard * 5.95) + (intOAP * 4.95) & " for " & intTotal & " People.") 
    Reader.Close() 

    If intTotal > 0 And intTotal <= 100 Then 
     BtnBook.Enabled = True 
    Else 
     BtnBook.Enabled = False 
    End If 

    Reader = New StreamReader("Settings.txt") 
    booAdmin = Reader.ReadLine 
    Reader.Close() 

    Writer = New StreamWriter("Settings.txt") 
    Writer.WriteLine(booAdmin) 
    Writer.WriteLine(intTotal) 
    Writer.Close() 
End Sub 

    Private Sub CmbOAP_SelectedIndexChanged_1(sender As Object, e As EventArgs) Handles CmbOAP.SelectedIndexChanged 
     intOAP = CInt(CmbOAP.Text) 'Code for OAP combo box 
     intTotal = intChildren + intStandard + intOAP 
     LblTotal.Text = ("Total: £" & (intChildren * 3.5) + (intStandard * 5.95) + (intOAP * 4.95) & " for " & intTotal & " People.") 
     Reader.Close() 

     If intTotal > 0 And intTotal <= 100 Then 
      BtnBook.Enabled = True 
     Else 
      BtnBook.Enabled = False 
     End If 

     Reader = New StreamReader("Settings.txt") 
     booAdmin = Reader.ReadLine 
     Reader.Close() 

     Writer = New StreamWriter("Settings.txt") 
     Writer.WriteLine(booAdmin) 
     Writer.WriteLine(intTotal) 
     Writer.Close() 
    End Sub 
End Class 

Эта ошибка появляется только для этой формы и никаких других, поэтому я неуверен, если это что-то делать с формой, или если форма каким-то образом испортилась.

+2

Какая строка вызывает проблему? Сообщение об ошибке довольно ясно, вы пытаетесь преобразовать пустую строку в целое число (одна строка, вызывающая проблему). Предложите вам включить опцию strict on для начала - это, вероятно, выделит вашу ошибку во время разработки, а не во время выполнения. –

+0

Вы пробовали отлаживать ее? В какой строке, в частности, он генерирует исключение? – w69rdy

+1

'booAdmin = Reader.ReadLine'. Бу. –

ответ

0

Reader.ReadLine возвращает строки. Я вижу несколько мест в вашем коде, где вы пытаетесь напрямую присваивать строковые значения переменным, которые не являются строками. например:

booAdmin = Reader.ReadLine 

Это, вероятно, следует:

booAdmin = Boolean.Parse(Reader.ReadLine) 

Любое место, где вы пытаетесь прочитать целое число должно быть:

someIntegerVariable = Integer.Parse(Reader.Readline) 

Если вы хотите быть еще более же , используйте TryParse вместо Parse, но это будет иметь немного другую семантику.

+0

Спасибо, но это не совсем то, что я ищу. Чтение «booAdmin» читается из текстового файла, и текстовый файл скажет «true» в этой точке, так что это не проблема. Главное, о чем я думаю, это то, что визуальная студия испортила некоторые способы, но я хочу убедиться, прежде чем мне придется переделать все это. И этот код работал нормально, пока визуальная студия не подумала, что он просто взорвется. – Finian

Смежные вопросы