IDKaName Ответов: 1

Как закрыть form1 и form2 и показать form3? Vb.net


Эй, я создал программу HWID, чтобы проверить свою программу, как она работает. Я создал 2 формы. Форма form1 и кнопка button1, как им "подключиться" и button2 как "мой HWID". Существует также текстовое поле 1 под названием "txtHWID" (visible: false, readOnly: true). form2 имеет только одно текстовое поле под названием laso "txtHWID" (visible: false, readOnly: true), и когда я нажимаю кнопку form1 "My HWID", она открывает form2 и показывает мой HWID. затем один я копирую и вставляю его на свой хостинг, чтобы получить доступ, затем нажимаю кнопку button1 с именем "Connect" и появляется надпись "Login Successful!"

Теперь я хочу, чтобы кнопка 1 с именем "Connect" показывала "Login Successful!", а затем при нажатии кнопки OK закрывала form1 и form2 и отображала только form3 в новом окне. После закрытия формы 3 Вся программа должна быть закрыта. Есть идеи? Спасибо, что уделили мне время!

Что я уже пробовал:

Форма 1:
Imports System.IO
Imports System.Management

Public Class Form1
    Private cpuInfo As String

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        txtHWID.Text = GetHWID()
        Me.AcceptButton = btnConnect
    End Sub
    Function GetHWID()
        Dim mc As New ManagementClass("win32_processor")
        Dim moc As ManagementObjectCollection = mc.GetInstances
        For Each mo As ManagementObject In moc
            If cpuInfo = "" Then
                cpuInfo = mo.Properties("processorID").Value.ToString
                Exit For
            End If
        Next
        Return cpuInfo
    End Function

    Private Sub btnConnect_Click(sender As Object, e As EventArgs) Handles btnConnect.Click
        Dim Request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("...html")
        Dim Response As System.Net.HttpWebResponse = Request.GetResponse()
        Dim SR As System.IO.StreamReader = New System.IO.StreamReader(Response.GetResponseStream)
        Dim HWIDAdded As String = SR.ReadToEnd
        Dim ThisHWID As String = GetHWID()
        If HWIDAdded.Contains(ThisHWID) Then
            'CODE FOR SUCCESFUL LOGIN'
            MsgBox("Login Sucessful!", MsgBoxStyle.Information)
        Else
            'CODE FOR FAILURE LOGIN'
            Me.Close()
        End If
    End Sub

    Private Sub btnHWID_Click(sender As Object, e As EventArgs) Handles btnHWID.Click
        Form2.Show()
    End Sub
End Class


Форма 2:
Imports System.IO
Imports System.Management

Public Class Form2

    Dim cpuInfo As String

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        txtHWID.Text = GetHWID()
    End Sub

    Function GetHWID()
        Dim mc As New ManagementClass("win32_processor")
        Dim moc As ManagementObjectCollection = mc.GetInstances
        For Each mo As ManagementObject In moc
            If cpuInfo = "" Then
                cpuInfo = mo.Properties("processorID").Value.ToString
                Exit For
            End If
        Next
        Return cpuInfo
    End Function
End Class

1 Ответов

Рейтинг:
2

OriginalGriff

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

Вместо этого создайте новый экземпляр формы и добавьте обработчик для его события FormClosed в Form1.
Затем спрятать на form1, чтобы получить его из отображения, и использования метода showdialog, чтобы отобразить новую форму.
В обработчике закройте основную форму, и все готово.


IDKaName

Спасибо. Так ли это?

Частная суб Form1_FormClosed(как byval отправителя как объект, как byval E Как FormClosedEventArgs)
Дим messageBoxCS как системы.Текст.То StringBuilder = Новая Система.Текст.То StringBuilder()
messageBoxCS.AppendFormat("{0} = {1}", "CloseReason", e.CloseReason)
messageBoxCS.Аппендикс()
Ящик для сообщений.Show(messageBoxCS.ToString(), "FormClosed Event")
Конец Подводной Лодки

OriginalGriff

Нет, это событие Form1 FormClosed - вам нужно обработать событие для нового экземпляра формы, а не для Form1.
Ваш код получит это событие только перед закрытием вашего приложения!
Поэтому добавьте его, когда вы используете Ключевое слово New для создания нового экземпляра второй (или третьей) формы.

BobbyStrain

Такие операции становятся простыми, если вы используете C# и Selenium.