Программное создание простого приложения формы добавления - PullRequest
1 голос
/ 17 июня 2020

Я хочу создать простую программу сложения в формате vb. net application. Также я хочу программно создавать все элементы управления. У меня есть три текстовых поля и одна кнопка. Когда кнопка нажата, она берет значение из двух текстовых полей и назначает его третьему значению текстового поля. Я не могу получить строку текстовых полей из дескриптора нажатия кнопки.

Моя кодировка следующая:

Public Class Form1
    Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'Pushbutton
        Dim PushButton As New Button()
        PushButton.Text = "Add"
        PushButton.Location = New Point(10, 100)
        Me.Controls.Add(PushButton)
        AddHandler PushButton.Click, AddressOf myButtonHandler_Click
        '
        'TextBox1
        Dim TextBox1 As New TextBox
        TextBox1.Location = New Point(10, 3)
        Me.Controls.Add(TextBox1)

        'TextBox2
        Dim TextBox2 As New TextBox
        TextBox2.Location = New Point(200, 3)
        Me.Controls.Add(TextBox2)


        Dim TextBox3 As New TextBox
        TextBox3.Location = New Point(200, 100)
        Me.Controls.Add(TextBox3)

    End Sub

    Private Sub myButtonHandler_Click(ByVal sender As Object, ByVal e As EventArgs)

    End Sub

    Public Function ADD(x As Double, y As Double) As Double
        ADD = x + y
    End Function
End Class

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Перемещение объявления элементов управления на уровень формы позволяет видеть их во всех методах формы.

Public Class Form3
    Private TextBox1 As New TextBox
    Private TextBox2 As New TextBox
    Private TextBox3 As New TextBox
    Private PushButton As New Button

    Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'Pushbutton
        PushButton.Text = "Add"
        PushButton.Location = New Point(10, 100)
        Me.Controls.Add(PushButton)
        AddHandler PushButton.Click, AddressOf myButtonHandler_Click

        'TextBox1
        TextBox1.Location = New Point(10, 3)
        Controls.Add(TextBox1)

        'TextBox2
        TextBox2.Location = New Point(200, 3)
        Controls.Add(TextBox2)

        'TextBox3
        TextBox3.Location = New Point(200, 100)
        Controls.Add(TextBox3)
    End Sub

    Private Sub myButtonHandler_Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim firstNumber = CDbl(TextBox1.Text)
        Dim secondNumber = CDbl(TextBox2.Text)
        TextBox3.Text = ADD(firstNumber, secondNumber).ToString
    End Sub

    Public Function ADD(x As Double, y As Double) As Double
        ADD = x + y
    End Function
End Class
0 голосов
/ 18 июня 2020

Технически вы можете сделать это так же, как и раньше, но только если вы используете обработчик анонимного события для события нажатия кнопки, как показано ниже:

Public Class Form1

    Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TextBox1
        Dim TextBox1 As New TextBox
        TextBox1.Location = New Point(10, 3)
        Me.Controls.Add(TextBox1)

        'TextBox2
        Dim TextBox2 As New TextBox
        TextBox2.Location = New Point(200, 3)
        Me.Controls.Add(TextBox2)

        Dim TextBox3 As New TextBox
        TextBox3.Location = New Point(200, 100)
        Me.Controls.Add(TextBox3)

        'Pushbutton
        Dim PushButton As New Button()
        PushButton.Text = "Add"
        PushButton.Location = New Point(10, 100)
        Me.Controls.Add(PushButton)
        AddHandler PushButton.Click, Sub()
                                         Dim dblA, dblB As Double
                                         If Double.TryParse(TextBox1.Text, dblA) AndAlso Double.TryParse(TextBox2.Text, dblB) Then
                                             TextBox3.Text = ADD(dblA, dblB)
                                         Else
                                             MessageBox.Show("One or more Invalid Inputs")
                                         End If
                                     End Sub
    End Sub

    Public Function ADD(x As Double, y As Double) As Double
        ADD = x + y
    End Function

End Class

Хотя я рекомендую перемещение этих управляющих объявлений на уровень формы, как предложила Мэри.

...