五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > C#中DialogResult的屬性和用法

C#中DialogResult的屬性和用法

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):2287    更新時(shí)間:2018-06-07 11:08   參與評(píng)論

Window.DialogResult 屬性

.NET Framework (current version)其他版本 

獲取或設(shè)置對(duì)話框結(jié)果值,即從返回的值 ShowDialog 方法。


屬性值

Type: System.Nullable<Boolean>

一個(gè) Nullable<T> 類型的值 Boolean。 默認(rèn)值為 false。

異常

ExceptionCondition
InvalidOperationException

DialogResult 在通過(guò)調(diào)用打開(kāi)一個(gè)窗口前設(shè)置 ShowDialog。

- 或 -

DialogResult 通過(guò)調(diào)用打開(kāi)的窗口上設(shè)置 Show。

備注

DialogResult 可以使用的代碼中顯示一個(gè)對(duì)話框,以確定用戶是否接受 (true) 或已取消 (false) 對(duì)話框。 如果已接受對(duì)話框中,這表示打開(kāi)對(duì)話框中檢索數(shù)據(jù)收集的用戶,并對(duì)其進(jìn)行處理的代碼。 如果對(duì)話框已被取消,但是,這表示調(diào)用的代碼應(yīng)停止任何進(jìn)一步的處理。

在所有這些情況下, DialogResult 是 false 默認(rèn)情況下。

對(duì)話框通常提供一個(gè)用于取消對(duì)話框中,即按鈕的特殊按鈕其 IsCancel 屬性設(shè)置為 true。 或者它按下時(shí),或按 ESC 鍵時(shí),這種方式配置一個(gè)按鈕將自動(dòng)關(guān)閉窗口。 在這些情況下,任一 DialogResult 保持 false。

對(duì)話框中通常還提供一個(gè)接受按鈕,這是其 IsDefault 屬性設(shè)置為 true。 這種方式配置一個(gè)按鈕將引發(fā)其 Click 時(shí)它或 ENTER 鍵被按下事件。 但是,它不會(huì)自動(dòng)關(guān)閉該對(duì)話框中,也不會(huì)將設(shè)置 DialogResult 到 true。 您需要手動(dòng)編寫此代碼中,通常從 Click 默認(rèn)按鈕的事件處理程序。

DialogResult 是 null 時(shí)顯示對(duì)話框但不接受或已取消。

在對(duì)話框關(guān)閉后,你可以從返回的值獲取的對(duì)話框結(jié)果 ShowDialog 方法,或通過(guò)檢查 DialogResult 屬性。

DialogResult 僅時(shí)可以設(shè)置 Window 打開(kāi)通過(guò)調(diào)用其 ShowDialog 方法。


     在程序中,經(jīng)常會(huì)彈出一個(gè)對(duì)話框來(lái)讓用戶填寫一些信息,填寫完成后,當(dāng)用戶點(diǎn)擊“確定”按鈕后,在主窗體中進(jìn)行其他的處理。比如一個(gè)簡(jiǎn)單的例子,在主窗體中有一個(gè)菜單,是“增加用戶”,當(dāng)點(diǎn)擊這個(gè)菜單之后,我們需要彈出一個(gè)增加用戶的窗體出來(lái),就假設(shè)“增加用戶”的窗體叫frmAddUser,那么代碼如下:

    frmAddUser frm = new frmAddUser();
    if (frm.ShowDialog() == DialogResult.OK)
    {
        //todo list
    }

一般都是設(shè)置“增加用戶”窗體中“確定”按鈕的DialogResult的屬性,

clip_image002

      設(shè)置完成后,只要用戶一點(diǎn)擊“確定”按鈕,那么對(duì)話框就關(guān)閉,重新回到主窗體,然后可以在主窗體中進(jìn)行相應(yīng)的處理,比如把數(shù)據(jù)寫入數(shù)據(jù)庫(kù)等。

      現(xiàn)在有一個(gè)問(wèn)題就是,“增加用戶”的窗體如下:

clip_image004

      如果我想判斷一下,用戶輸入的郵件格式是否正確,那么我該把這段代碼放在哪呢?如果放在郵件輸入框那個(gè)TextBox的TextChaged事件中,那么用戶輸入一個(gè)字母都會(huì)激發(fā)那個(gè)事件,這樣就不太好,如果放在“確定”按鈕的事件中,那么如果用戶的郵件格式輸入的不正確,就不應(yīng)該返回主窗體,而是繼續(xù)留在這個(gè)窗體上,等待用戶修改,可是事實(shí)卻不是這樣,因?yàn)槟阍O(shè)置了“確定”按鈕的Dialogue屬性,只要用戶一點(diǎn)擊按鈕,主窗體中的

   if (frm.ShowDialog() == DialogResult.OK)

這個(gè)判斷就為真,不管你的郵件格式是否正確,主窗體都會(huì)繼續(xù)向下執(zhí)行。

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

   this.DialogResult = DialogResult.OK;

這樣主窗體中的if (frm.ShowDialog() == DialogResult.OK)這個(gè)判斷也為真,它會(huì)繼續(xù)執(zhí)行下面的代碼。如果不符合格式,就啥也不做,因?yàn)闆](méi)有設(shè)置窗體的Diagolue屬性為OK,所以“增加用戶”的對(duì)話框永遠(yuǎn)不會(huì)關(guān)閉,主窗體也會(huì)一直等待,而不會(huì)去執(zhí)行其他的代碼。

     例子比較簡(jiǎn)單,只是我原來(lái)不知道這些,所以在這里記錄一下。當(dāng)然這只是一種辦法,你也可以用其他的方法來(lái)解決類似這樣的問(wèn)題。


完整代碼實(shí)例:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace _2014050904DialogResult
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public string message = "You did not enter a server name. Cancel this operation?";
        public string caption = "No Server Name Specified";
        public MessageBoxButtons buttons = MessageBoxButtons.YesNo;
        public DialogResult result;
        public void show()
        {
            //顯示MessageBox.
            result = MessageBox.Show(this, message, caption, buttons);
            //如果點(diǎn)擊的是"YES"按鈕,將form關(guān)閉.
            if (result == DialogResult.Yes)
            {
                // Closes the parent form.
                this.Close();
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            show();
        }
    }
}


如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (2287人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)