default dialog


本文主要介紹關於的知識點,對【關於DialogResult的用法】和【default dialog】有興趣的朋友可以看下由【c472769019】投稿的技術文章,希望該技術和經驗能幫到你解決你所遇的【C#,DialogResult,form】相關技術問題。

default dialog

在程序中,經常會彈出一個對話框來讓用戶填寫一些信息,填寫完成后,當用戶點擊“確定”按鈕后,在主窗體中進行其他的處理。比如一個簡單的例子,在主窗體中有一個菜單,是“增加用戶”,當點擊這個菜單之后,我們需要彈出一個增加用戶的窗體出來,就假設“增加用戶”的窗體叫frmAddUser,那么代碼如下:

   1: frmAddUser frm = new frmAddUser();
   2:? 
   3: if (frm.ShowDialog() == DialogResult.OK)
   4:? 
   5: {
 
   6:? 
   7: //todo list
   8:? 
   9: }
  10:? 
一般都是設置“增加用戶”窗體中“確定”按鈕的DialogResult的屬性,

clip_image002

????? 設置完成后,只要用戶一點擊“確定”按鈕,那么對話框就關閉,重新回到主窗體,然后可以在主窗體中進行相應的處理,比如把數據寫入數據庫等。

????? 現在有一個問題就是,“增加用戶”的窗體如下:

clip_image004

????? 如果我想判斷一下,用戶輸入的郵件格式是否正確,那么我該把這段代碼放在哪呢?如果放在郵件輸入框那個TextBox的TextChaged事件中,那么用戶輸入一個字母都會激發那個事件,這樣就不太好,如果放在“確定”按鈕的事件中,那么如果用戶的郵件格式輸入的不正確,就不應該返回主窗體,而是繼續留在這個窗體上,等待用戶修改,可是事實卻不是這樣,因為你設置了“確定”按鈕的Dialogue屬性,只要用戶一點擊按鈕,主窗體中的

   1: if (frm.ShowDialog() == DialogResult.OK)
這個判斷就為真,不管你的郵件格式是否正確,主窗體都會繼續向下執行。

????? 最后,終於找到了一個比較好的解決辦法,都以為只有Button才有Diagolue屬性,沒想到窗體也有這個屬性。所以我們根本就不需要設置“確定”按鈕的Diagolue屬性,直接把判斷郵件是否合格的方法放在”確定”按鈕的點擊事件中,如果符合,那么就設置窗體的Diagolue屬性為OK,用下面的代碼:

   1:? 
   2: this.DialogResult = DialogResult.OK;
這樣主窗體中的if (frm.ShowDialog() == DialogResult.OK)這個判斷也為真,它會繼續執行下面的代碼。如果不符合格式,就啥也不做,因為沒有設置窗體的Diagolue屬性為OK,所以“增加用戶”的對話框永遠不會關閉,主窗體也會一直等待,而不會去執行其他的代碼。

???? 例子比較簡單,只是我原來不知道這些,所以在這里記錄一下。當然這只是一種辦法,你也可以用其他的方法來解決類似這樣的問題。

本文《關於DialogResult的用法》版權歸c472769019所有,引用關於DialogResult的用法需遵循CC 4.0 BY-SA版權協議。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: