Не могу получить значение из класса VB - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь создать простой калькулятор на основе классов в Visual Basic, но когда я нажимаю кнопки (Добавить) (Умножить), в качестве значения в текстовом поле отображается 0.

Вот мой код: ФОРМА 2:

Public Class Form2
Dim Class2 As part2Class = New part2Class()
Dim Class2b As part2ClassB = New part2ClassB()
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Num1 As Integer = CType(TextBox1.Text, Integer)
    Dim Num2 As Integer = CType(TextBox2.Text, Integer)
    MessageBox.Show(Class2.Calculate().ToString())
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim Num1 As Integer = CType(TextBox1.Text, Integer)
    Dim Num2 As Integer = CType(TextBox2.Text, Integer)
    MessageBox.Show(Class2b.Calculate())
End Sub

Конечный класс


part2Class CLASS

Public Class part2Class

    Public Property Num1
    Public Property Num2

    Public Overridable Function Calculate() As Integer
        Return Num1 + Num2

    End Function
End Class

Part2ClassB

Public Class part2ClassB
    Inherits part2Class
    Public Overrides Function Calculate() As Integer
        Return Num1 * Num2
    End Function
End Class

Когда явведите значения в текстовое поле и нажмите ДОБАВИТЬ / НЕСКОЛЬКО, в качестве значения будет показано 0.

PICTURE OF ISSUE

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Если CType не удастся, вы выйдете из строя вашей программы. Я изменил его на TryParse, который устанавливает переменную во втором параметре (в данном случае это свойство класса) и возвращает True или False. AndAlso останавливается, как только достигает False и переходит к Else части If

Вам необходимо объявить ваши свойства с типом данных в вашем классе. Смотрите мой комментарий о Option Strict.

Public Class part2Class

    Public Property Num1 As Integer
    Public Property Num2 As Integer

    Public Overridable Function Calculate() As Integer
        Return Num1 + Num2
    End Function
End Class


Public Class part2ClassB
    Inherits part2Class
    Public Overrides Function Calculate() As Integer
        Return Num1 * Num2
    End Function
End Class

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Class2 As part2Class = New part2Class()
        Dim message As String
        If Integer.TryParse(TextBox1.Text, Class2.Num1) AndAlso Integer.TryParse(TextBox2.Text, Class2.Num2) Then
            message = Class2.Calculate().ToString
        Else
            message = "Please enter a number in both text boxes."
        End If
        MessageBox.Show(message)
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim Class2b As part2ClassB = New part2ClassB()
    Dim message As String
    If Integer.TryParse(TextBox1.Text, Class2b.Num1) AndAlso Integer.TryParse(TextBox2.Text, Class2b.Num2) Then
        message = Class2b.Calculate().ToString
    Else
        message = "Please enter a number in both text boxes."
    End If
    MessageBox.Show(message)
End Sub
0 голосов
/ 24 июня 2019

Вы не присваиваете значения свойствам ваших классов.Попробуйте это:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim Num1 As Integer = CType(TextBox1.Text, Integer)
    Dim Num2 As Integer = CType(TextBox2.Text, Integer)

    Class2b.Num1=Num1
    Class2b.Num2=Num2
    MessageBox.Show(Class2b.Calculate())
End Sub
...