2012-10-11 90 views
0

我正在構建一個表單以從用戶處獲取用戶名和密碼,但我無法使其工作。基本上,當我輸入用戶名和密碼時,如果我點擊「取消」或關閉窗口它會提取數據,但當我按下「確定」時它會崩潰。我確信這是一個簡單的修復,但我似乎無法在Google上找到類似的東西(這意味着有更好的方法來做到這一點......但我是vb.net的新手,哈哈)。對話框在接受按鈕單擊時保持打開狀態

這裏是(在字典中返回的用戶名/密碼,包裹在一個公共功能)的形式:

Public Function displayLoginForm() As Dictionary(Of String, String) 

    Dim loginForm As New Form() 
    Dim usernameLabel As New Label() 
    Dim username As New TextBox() 
    Dim passwordLabel As New Label() 
    Dim password As New TextBox() 
    Dim okButton As New Button() 
    Dim cancelButton As New Button() 

    usernameLabel.Text = "Username:" 
    usernameLabel.Location = New Point(10, 10) 
    usernameLabel.Width = 70 
    username.Height = 20 
    username.Width = 300 
    username.Location = New Point(80, 10) 

    passwordLabel.Text = "Password:" 
    passwordLabel.Location = New Point(10, 40) 
    passwordLabel.Width = 70 
    password.Height = 20 
    password.Width = 300 
    password.Location = New Point(80, 40) 

    okButton.Text = "Ok" 
    okButton.Location = New Point(220, 70) 

    cancelButton.Text = "Cancel" 
    cancelButton.Location = New Point(okButton.Left + okButton.Width + 10, okButton.Top) 

    loginForm.Text = "Login Form" 
    loginForm.Height = 130 
    loginForm.Width = 400 
    loginForm.FormBorderStyle = FormBorderStyle.FixedDialog 
    loginForm.MaximizeBox = False 
    loginForm.MinimizeBox = False 
    loginForm.AcceptButton = okButton 
    loginForm.CancelButton = cancelButton 
    loginForm.StartPosition = FormStartPosition.CenterScreen 

    loginForm.Controls.Add(usernameLabel) 
    loginForm.Controls.Add(username) 
    loginForm.Controls.Add(passwordLabel) 
    loginForm.Controls.Add(password) 
    loginForm.Controls.Add(okButton) 
    loginForm.Controls.Add(cancelButton) 

    loginForm.ShowDialog() 

    Dim Result As New Dictionary(Of String, String) 
    Result.Add("username", username.Text) 
    Result.Add("password", password.Text) 

    Return Result 

End Function 
+0

你真的好奇你爲什麼_「在Google上找不到東西」_帶有_「VB.net表單在按下接受按鈕時崩潰」這個主題_? –

+0

很明顯,我沒有輸入到谷歌。 :)我一直在尋找諸如「Vb.net示例表單」和「Vb.net登錄表單」之類的東西,而不是什麼。雖然我不確定如何在Stack Overflow上輸入它,但我願意提供建議。 – Keilan

+2

更好的標題應該是:「對話框在接受按鈕點擊時保持打開狀態」。那麼這個問題很有可能幫助其他人,就像現在一樣。 –

回答

2

我缺少這行

okButton.DialogResult = Windows.Forms.DialogResult.OK 

,如果你把它添加到您的代碼,表單將關閉而沒有問題。
說實話,我不明白爲什麼取消按鈕的作品。
它應該有一個類似的線

cancelButton.DialogResult = Windows.Forms.DialogResult.Cancel 

編輯:取消按鈕的默認DialogResult屬性設置爲取消,我相信這對okButton離開了DialogResult.OK(所以它默認爲取消)迷winform管理器,看到一個AcceptButton = okButton,使用DialogResult = Cancel設置。

+0

謝謝史蒂夫,照顧它,並解釋讚賞。 – Keilan

相關問題