首頁 > 軟體

C#中的Dialog對話方塊

2022-05-13 21:50:16

一、MessageBox彈出框

MessageBox.Show(<字串> Text, <字串> Title, <整型> nType,MessageBoxIcon);

  • 第一個引數是 String 型別,表示提示框裡面的 內容;
  • 第二個引數是String 型別,表示提示框的 標題;
  • 第三個引數是整數型別,表示訊息方塊的型別  ,一般的都使用系統提供的幾種型別;
  • 第四個引數是提示框的 圖示,比如說警告、提示、問題等等。

MessageBoxButtons型別:

  • AbortRetryIgnore: 訊息方塊包含“中止”、“重試”和“忽略”按鈕。
  • OK :訊息方塊包含“確定”按鈕。(預設)
  • OKCancel : 訊息方塊包含“確定”和“取消”按鈕。(上例所示)
  • RetryCancel  :訊息方塊包含“重試”和“取消”按鈕。
  • YesNo :訊息方塊包含“是”和“否”按鈕。
  • YesNoCancel :訊息方塊包含“是”、“否”和“取消”按鈕

MessageBoxIcon圖示樣式:

  • MessageBoxIcon.Question
    MessageBoxIcon.Asterisk
    MessageBoxIcon.Information
    MessageBoxIcon.Error
    MessageBoxIcon.Stop
    MessageBoxIcon.Hand
    MessageBoxIcon.Exclamation
    MessageBoxIcon.Warning

舉例

    MessageBox.Show("使用者名稱或者密碼不能為空");
    MessageBox.Show("使用者名稱或者密碼不能為空","登入提示");
    MessageBox.Show("使用者名稱或者密碼不能為空","登入提示",MessageBoxButtons.OKCancel);
    MessageBox.Show("使用者名稱或者密碼不能為空","登入提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation);

      二、WinForm自帶對話方塊

      除PrintPreviewDialog外,所有的對話方塊都繼承於抽象類CommonDialog。

      CommonDialog的繼承結構

      • 1、檔案對話方塊(FileDialog) 它又常用到兩個:
        • 開啟檔案對話方塊(OpenFileDialog)
        • 儲存檔案對話(SaveFileDialog)
      • 2、字型對話方塊(FontDialog)
      • 3、顏色對話方塊(ColorDialog)
      • 4、列印預瀏對話方塊(PrintPreviewDialog)
      • 5、頁面設定(PrintDialog)
      • 6、列印對話方塊(PrintDialog)

      CommonDialog的方法

      • OnHelpRequest(EventArgs):    引發 HelpRequest 事件。
      • Reset():在派生類中被重寫時,將通用對話方塊的屬性重置為預設值。
      • ShowDialog():    用預設的所有者執行通用對話方塊。
      • ShowDialog(IWin32Window) :   執行具有指定所有者的通用對話方塊。

      1、開啟檔案對話方塊(OpenFileDialog)

      基本屬性

      • InitialDirectory 對話方塊的初始目錄
      • Filter 要在對話方塊中顯示的檔案篩選器,例如,"文字檔案(*.txt)|*.txt|所有檔案(*.*)||*.*"
      • FilterIndex 在對話方塊中選擇的檔案篩選器的索引,如果選第一項就設為1
      • RestoreDirectory 控制對話方塊在關閉之前是否恢復當前目錄
      • FileName 獲取或設定一個包含在檔案對話方塊中選定的檔名的字串。
      • Title 將顯示在對話方塊標題列中的字元
      • AddExtension 是否自動新增預設擴充套件名
      • CheckPathExists 在對話方塊返回之前,檢查指定路徑是否存在
      • DefaultExt 預設擴充套件名
      • DereferenceLinks 在從對話方塊返回前是否取消參照快捷方式
      • ShowHelp 啟用"幫助"按鈕
      • ValiDateNames 控制對話方塊檢查檔名中是否不含有無效的字元或序列

      範例

      System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog();
      dlg.Title = "開啟檔案";
      dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Templates);
      dlg.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
      dlg.FilterIndex = 2;
      dlg.RestoreDirectory = true;
      if (dlg.ShowDialog() == DialogResult.OK)
      {
          if (dlg.FileName != "") //如果dlg.Multiselect=true;可以是dlg.FileNames
          {
              MessageBox.Show("你選擇了" + dlg.FileName);
          }
      }

      2、儲存檔案對話方塊(SaveFileDialog)

      屬性

      • Filter 要在對話方塊中顯示的檔案篩選器,例如,"文字檔案(*.txt)|*.txt|所有檔案(*.*)|*.*"
      • FilterIndex 在對話方塊中選擇的檔案篩選器的索引,如果選第一項就設為1
      • RestoreDirectory 控制對話方塊在關閉之前是否恢復當前目錄
      • AddExtension 是否自動新增預設擴充套件名
      • CheckFileExists 獲取或設定一個值,該值指示如果使用者指定不存在的檔名,對話方塊是否顯示警告。
      • CheckPathExists 在對話方塊返回之前,檢查指定路徑是否存在
      • Container 控制在將要建立檔案時,是否提示使用者。只有在ValidateNames為真值時,才適用。
      • DefaultExt 預設擴充套件名
      • DereferenceLinks 在從對話方塊返回前是否取消參照快捷方式
      • FileName 獲取或設定一個包含在檔案對話方塊中選定的檔名的字串。
      • InitialDirector 對話方塊的初始目錄
      • OverwritePrompt 控制在將要在改寫現在檔案時是否提示使用者,只有在ValidateNames為真值時,才適用
      • ShowHelp 啟用"幫助"按鈕
      • Title 將顯示在對話方塊標題列中的字元
      • ValidateNames 控制對話方塊檢查檔名中是否不含有無效的字元或序列

      範例

      System.IO.Stream stream;
      System.Windows.Forms.SaveFileDialog saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();
      saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
      saveFileDialog1.FilterIndex = 2;
      saveFileDialog1.RestoreDirectory = true;
      if (saveFileDialog1.ShowDialog() == DialogResult.OK)
      {
          if ((stream = saveFileDialog1.OpenFile()) != null)
          {
              // Code to write the stream goes here.
              stream.Close();
           }
      }

      3、預覽列印對話方塊和列印對話方塊

      1、預覽列印對話方塊(PrintPreviewDialog)屬性:

      • AutoScrollMargin 獲取或設定自動捲動邊距的大小。

      • AutoScrollMinSize 獲取或設定自動捲動的最小尺寸。

      • DialogResult 獲取或設定表單的對話方塊結果。

      • Document 獲取或設定要預覽的檔案。

      • HelpButton 獲取或設定一個值,該值指示是否應在表單的標題框中顯示“幫助”按鈕。

      2、列印對話方塊(PrintDialog)屬性:

      • AllowPrintToFile 禁止或使用"列印到檔案"核取方塊

      • AllowSelection 禁止或使用"選定內容"單選框

      • AllowSomePages 禁止或使用"頁"無線電鈕

      • Document 從中獲取印表機設定的PrintDocument

      • PrintToFile 列印到檔案"核取方塊是否選中
      • ShowHelp 控制是否顯示"幫助"按鈕
      • ShowNetWork 控制是否顯示"網路"按鈕

      3、範例:

      private void printPreviewButton_Click(object sender, EventArgs e)
      {
          StreamReader streamToPrint = new StreamReader("PrintMe.Txt");
          try
          {
              PrintDocument pd = new PrintDocument(streamToPrint); //假定為預設印表機
              if (storedPageSettings != null)
              {
                  pd.DefaultPageSettings = storedPageSettings;
              }
              PrintPreviewDialog dlg = new PrintPreviewDialog();
              dlg.Document = pd;
              dlg.ShowDialog();
          }
          finally
          {
              streamToPrint.Close();
          }
      
      }
      
      private void printButton_Click(object sender, EventArgs e)
      {
      
          StreamReader streamToPrint = new StreamReader("PrintMe.Txt");
          try
          {
              PrintDocument pd = new PrintDocument(streamToPrint);
              PrintDialog dlg = new PrintDialog();
              dlg.Document = pd;
              DialogResult result = dlg.ShowDialog();
              if (result == DialogResult.OK)
                  pd.Print();
      
          }
          finally
          {
              streamToPrint.Close();
          }
      
      }

      三、自定義對話方塊

      1 模態視窗: ShowDialog():

      開啟模態視窗後,只要不關閉該視窗,滑鼠焦點或者遊標就會一直停留在該視窗上。只有關閉該視窗後,呼叫視窗才能繼續。

      模態視窗關閉後,仍可以讀取模態視窗中的資訊,如視窗的返回狀態等,以後還可以使用ShowDialog()使其可見。

      2 非模態視窗: Show():

      開啟非模態視窗後,仍可以操作呼叫視窗。後面的程式碼立即執行。

      關閉非模態視窗,該視窗將不復存在,會釋放視窗的所有資源,所以無法得到該視窗的任何資訊。常用Hide()方法(等效於Visible=false)然後呼叫Show()方法使其可見。

      3、對話方塊表單:Form2

      public Form1(string para)//獲取引數
      {
          InitializeComponent();
      
          this.StartPosition = FormStartPosition.CenterParent;//啟動位置,父視窗中央
          this.MaximizeBox = false;
          this.MinimizeBox = false;
          this.ShowIcon = false;//不顯示圖示
          this.ControlBox = false;
          this.ShowInTaskbar = false;
          this.FormBorderStyle = FormBorderStyle.FixedDialog;//邊框樣式為固定對話方塊
          this.btnOK.DialogResult = DialogResult.OK;//"Enter"為OK按鈕
          this.btnCancel.DialogResult = DialogResult.Cancel;//「ESC」為Cancel按鈕
          this.textBox1.Text = para;
      }
      
      public string ReturnText //定義一個公共屬性,供呼叫視窗Form1使用
      {
          get { return this.textBox1.Text + "b"; }
      }
      
      
      private void Form1_Load(object sender, EventArgs e)
      {
          if (this.Owner.Name != "Form1")//Owner為呼叫表單,即呼叫改對話方塊的表單
              MessageBox.Show("非法呼叫");
      }
      
      
      private void BtnOK_Click(object sender, EventArgs e)
      {
          if (this.textBox1.Text.Trim().Length == 0)
              MessageBox.Show("無輸入");
          this.textBox1.Focus();
          this.DialogResult = DialogResult.None;//阻止隱藏對話方塊,對話方塊不消失
      }

      4、主表單Form1:

      Form f2 = new Form2("a");
      
      if (f2.ShowDialog(this) == DialogResult.OK)//對應Form2中的Owner,this為給對話方塊表單傳值
          this.textBox1.Text = f2.ReturnText;
      f2.Close();
      f2.Dispose();

      到此這篇關於C#對話方塊Dialog的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。


      IT145.com E-mail:sddin#qq.com