2014/09/13

ASP.Net 使用.Net MessageBox來與使用者互動

.Net內有個MessageBox,從VB 6.0時期開始寫程式時,就是一個很方便的元件
這次案子用到的,是能讓使用者點擊刪除標籤能夠刪除該資料庫的東西
而我不想透過JavaScript或AJAX的方式,所以就用MessageBox這個元件

一開始先在專案按右鍵加入參考


將System.Windows.Forms打勾






程式碼如下:
using System;
using System.Web.UI;

using Forms = System.Windows.Forms;

namespace WebApplication1
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            /*
             * MessageBox.Show方法會回傳一個DialogResult的物件
             * 而DialogResult本身是一個列舉,所以我們可以透過MessageBox.Show方法來得知使用者選的是哪一個列舉
             * 第一項參數則是提示視窗的文字方塊
             * 第二項參數則是提示視窗的標題
             * 第三項參數則是要顯示哪些按鈕
             * 第四項參數則是提示視窗所要顯示的小圖示
             * 第五項參數則是要以哪個按鈕為預設按鈕
             * 第六項參數則是要提示視窗所要顯示的位置
             * 第七項參數則是提示視窗是否要有個說明按鈕
             */
            System.Windows.Forms.DialogResult result = System.Windows.Forms.MessageBox.Show("文字方塊", "標題", System.Windows.Forms.MessageBoxButtons.YesNo,
                System.Windows.Forms.MessageBoxIcon.Question, System.Windows.Forms.MessageBoxDefaultButton.Button1,
                System.Windows.Forms.MessageBoxOptions.ServiceNotification, false);

            if (result == System.Windows.Forms.DialogResult.Yes)
            {
                DemoDiv.InnerText = "Yes";
            }
            else if (result == System.Windows.Forms.DialogResult.No)
            {
                DemoDiv.InnerText = "No";
            }
        }
    }
}


MessageBox.Show方法會回傳一個DialogResult的物件
而DialogResult本身是一個列舉,所以我們可以透過MessageBox.Show方法來得知使用者選的是哪一個列舉
第一項參數則是提示視窗的文字方塊
第二項參數則是提示視窗的標題
第三項參數則是要顯示哪些按鈕
第四項參數則是提示視窗所要顯示的小圖示
第五項參數則是要以哪個按鈕為預設按鈕
第六項參數則是要提示視窗所要顯示的位置
第七項參數則是提示視窗是否要有個說明按鈕


如果是選擇Yes,則會在DemDiv裡面出現Yes,反之則是No

使用這個MessageBox可能需要注意到有些元件可能會因為命名空間內有重複的元件,所以你可以將命名空間加入在要宣告的物件前面
除此之外,如果覺得不喜歡將命名空間加在前面的開發者可以使用別名來取代,在第四行我有寫到using Forms = System.Windows.Forms;
這行的意思代表我將System.Windows.Forms命名空間給予一個別名為Forms
所以也可已將System.Windows.Forms.DialogResult改為Forms.DialogResult




參考資料:
http://msdn.microsoft.com/zh-tw/library/tewzaxwc(v=vs.110).aspx