C# 登錄窗口的設計技巧


記得很久之前要用C#做個需要登錄的小東西,自己之前完全沒有編寫WinForm的經驗,整個過程中,自己感覺應該怎么寫就怎么寫,時常導致許多邏輯性的錯誤,比如在做這個登錄窗口的時候,應該實現的效果是,用戶啟動程序,首先顯示登錄窗口,由用戶輸入用戶名和密碼等登錄信息,然后如果點擊登錄按鈕則驗證用戶名和密碼的正確性,如正確則調出程序主窗口,如果點擊取消按鈕則關閉程序,自己第一次的時候首先設計了個登錄窗口LoginForm,兩個按鈕CancelButton和OKButton,然后分別添加各自的Click事件,OKButton的Click事件中驗證用戶信息的正確性,並返回驗證結果,如果正確就new一個主窗口MainForm,這個時候程序的主函數Main中要這樣寫:Application.run(new LoginForm());這樣最后導致的結果就是感覺所有的事情都要LoginForm去做,導致它過於臃腫,本來我們的重心應該在MainForm中的;下面的做法就很好的避免了這個邏輯錯誤;

第一步:設計一個登錄窗口LoginForm,內含兩個按鈕CancelButton和OKButton,還有具體的內容輸入框,如textBoxID和textBoxPassword,另設相對應的類成員用來接受輸入框中的內容,如UserName和PassWord,只需要添加OKButton的Click事件,如下:

 private void OKButton_Click(object sender, EventArgs e)
        {
            PassWord = textBoxPassword.Text;
            UserName = textBoxID.Text;      

        }

還要在LoginForm.Designer.cs的InitializeComponent方法中添加兩者的屬性,分別為:

this.OKButton.DialogResult = System.Windows.Forms.DialogResult.OK;

this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;

這樣LoginForm就完事了,怎么樣,這樣的話LoginForm夠簡潔吧。。。。。

第二步:設計主窗口,這才是我們工作的重心,怎么做看具體情況,這里就不討論了,這里只說下和上面登錄窗口相關聯的部分,我們只需要在MainForm的MainForm_Load方法中寫下如下代碼即可:

private void MainForm_Load(object sender, EventArgs e)
        {
            LoginForm formLogin = new LoginForm();
            if(formLogin.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
            {
                string userName = formLogin.UserName;
                string password = formLogin.PassWord;
                formLogin.Dispose();
            }
            else
            {
                formLogin.Dispose();
                this.Dispose();
            }
           
        }

就這樣就基本可以了,注意這里是用到了模式化窗口的方法ShowDilog,參數this表示MainForm是LoginForm的父窗口,這里就用到ShowDilog的返回值,就是上面設置的兩個按鈕的DialogResult屬性。

總之,感覺這才是真正的登錄類窗口設計的正統方法,我才掌握,真是太羞愧了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM