2015-08-22 115 views
0

我想做一个登录窗口和一个主窗口。问题是当我关闭登录窗体并显示主窗口时,整个程序停止。VB.NET - 使用多种形式

登录表单:

Imports System.IO 
Imports System.Text 
Imports System.Net 

Public Class frmLogin 

    Dim address As String = "http://puu.sh/jKJ**Zq/d613de****29.txt" 
    Dim client As WebClient = New WebClient() 

    Private Sub frmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     'frmMain.Close() 
    End Sub 

    Private Sub frmLogin_Close(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.FormClosed 
     frmMain.Show() 
    End Sub 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

     If attemptLogin() Then 
      MsgBox("Login Successful") 
      Me.Close() 
      'frmMain.Show() 
     Else 
      MsgBox("Username or password is incorrect") 
     End If 

    End Sub 

    Private Function attemptLogin() 
     Dim reader As StreamReader = New StreamReader(client.OpenRead(address)) 

     Dim line As String 
     Dim username As String 
     Dim password As String 

     line = reader.ReadLine() 

     Do While Not line Is Nothing 

      username = line.Split(":")(0) 
      password = line.Split(":")(1) 

      If (username = TextBox1.Text And password = TextBox2.Text) Then 
       Return True 
      End If 

      line = reader.ReadLine() 

     Loop 

     reader.Close() 
     client.Dispose() 

     Return False 

    End Function 

    Private Function Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 

     Dim client As WebClient = New WebClient() 
     Dim reader As StreamReader = New StreamReader(client.OpenRead(address)) 
     Dim line As String 

     line = reader.ReadLine 

     Do While Not line Is Nothing 
      line = reader.ReadLine() 
     Loop 

     reader.Close() 
     Dim writer As StreamWriter = New StreamWriter(client.OpenRead(address)) 
     writer.Write(TextBox1.Text & ":" & TextBox2.Text) 

     writer.Close() 
     client.Dispose() 

     Return False 

    End Function 

End Class 

主窗口:

Public Class frmMain 

    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load 
     'frmMain.Close() 
    End Sub 

    Private Sub frmMain_closed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.FormClosing 

    End Sub 

End Class 

我是相当新的VB.NET很抱歉的是,缺乏知识/丑编码。我习惯用Java编程GUI。

+0

转到项目属性,并将关机模式更改为“当最后一个窗体关闭” – Plutonix

+0

也许你可以在这里得到你的问题提示http://stackoverflow.com/questions/4976380/net-end-vs-form- close-vs-application-exit-cleaner-way-to-close-ones-app – Steve

回答

0

您需要将'关闭模式'设置为'最后一个窗体关闭时'。

您可以将我的项目,然后应用(第一个选项卡)点击找到此设置。 然后您可以在底部找到该设置。

+0

哦,我的坏,我不知道我能做到这一点。另一个问题,是在程序开始时创建的表单,还是我在程序启动时选择显示的表单? – Man16

+0

只是你选择的表单。但是,当第一个窗体加载时,您可以使用frmSecond.ShowDialog()轻松打开第二个窗体。 – brco

+0

或frmSecond.Show()在你的情况下... – brco