一、對話方塊
Windows提供的標準對話方塊:開啟檔案、另存新檔、瀏覽檔案夾、顏色對話方塊、字型對話方塊
C#提供了兩種特殊對話方塊:訊息對話方塊、關於對話方塊
1. 開啟對話方塊 OpenFileDialog
(1)Filter屬性: Excel
檔案
|*.xls
”,前面的“
Excel
檔案”成為標籤,是一個可讀的字串,可以自訂,“
|*.xls
”是篩選器,表示篩選檔案夾中尾碼名為
.xls
的檔案
,
“
*
”表示匹配
Excel
檔案名稱的字串。
- Filter是null或Empty,表示顯示所有檔案,並總會顯示檔案夾
- 需要篩選特定的檔案,設定Filter屬性為“標籤|*.尾碼”,按照這個格式設定,標籤可以自訂,是字串即可,尾碼表示你需要篩選的檔案尾碼,例如“.txt、.doc”等
- 需要篩選多種檔案,比方說需要篩選圖片檔案,但是圖片檔案的尾碼有幾種,例如jpg、png、gif等,當需要同時篩選這些檔案,設定Filter屬性為:標籤|*.jpg;*.png;*.gif”,注意:只是在篩選器中多添加了幾個尾碼,不同尾碼之間使用分號隔開
- 當需要篩選多種檔案,但是不同時將它們全部列出來,只有使用者分別通過下拉式清單選擇需要的檔案類型時,才進行篩選。這種情況下只需要多設定幾個篩選器即可,filter屬性設定如下:“標籤1|*.jpg|標籤2|.png|標籤3|.gif”。注意:不同的篩選器之間使用“|”分隔即可。
(2)Multiselect:多選
(3)FileNames屬性:用來擷取對話方塊中所有選定檔案的檔案名稱。每個檔案名稱都既包含檔案路徑又包含副檔名。如果未選定檔案,該方法將返回空數組。
(4)RestoreDirectory屬性:用來擷取或設定一個值,該值指示對話方塊在關閉前是否還原目前的目錄。假設使用者在搜尋檔案的過程中更改了目錄,且該屬性值為 true,那麼,對話方塊會將目前的目錄還原為初始值,若該屬性值為 false,則不還原成初始值。預設值為 false。
運行:通用對話方塊對象名.ShowDialog();
傳回值:如果單擊對話方塊中的【確定】按鈕,則傳回值為 DialogResult.OK;否則傳回值為DialogResult.Cancel。
private void button1_Click(object sender, EventArgs e)<br /> {<br /> openFileDialog1.Title = "開啟檔案.."; //視窗標題,預設為“開啟”<br /> openFileDialog1.Filter = "文檔(*.doc;*.xls)|*.doc;*.xls|圖片(*.png;*.pic;*.jpg)|*.png;*.pic;*.jpg";<br /> openFileDialog1.FilterIndex = 1; //當前選定的過濾器索引<br /> openFileDialog1.InitialDirectory = Application.ExecutablePath; //初始目錄<br /> openFileDialog1.Multiselect = true; //是否多選<br /> if (openFileDialog1.ShowDialog() == DialogResult.OK) //是否選擇了檔案<br /> {<br /> for (int i = 0; i < openFileDialog1.FileNames.Length; i++)<br /> {<br /> richTextBox1.Text += openFileDialog1.FileNames[i] + "/n";<br /> }<br /> }<br /> }
2.另存新檔對話方塊 SaveFileDialog
樣本:一個按鈕開啟一個文字檔,把內容顯示在RichTextBox控制項中;另一個按鈕將RichTextBox內容寫入文字檔中。
using System.IO;
private void button2_Click(object sender, EventArgs e)<br /> {<br /> openFileDialog2.Filter = "文字檔(*.txt)|*.txt";<br /> if (openFileDialog2.ShowDialog() == DialogResult.OK) {<br /> StreamReader sreader = new StreamReader(openFileDialog2.FileName,Encoding.Default);<br /> richTextBox2.Text = sreader.ReadToEnd();<br /> sreader.Close();<br /> }<br /> }<br /> private void button3_Click(object sender, EventArgs e)<br /> {<br /> saveFileDialog2.Filter = "文字檔(*.txt)|*.txt";<br /> if (saveFileDialog2.ShowDialog() == DialogResult.OK) {<br /> StreamWriter swriter = new StreamWriter(saveFileDialog2.FileName,true);<br /> swriter.Write(richTextBox2.Text);<br /> swriter.Close();<br /> }<br /> }
3.瀏覽檔案夾
選擇的路徑:對象.SelectedPath
初始路徑:對象.RootFolder
private void button4_Click(object sender, EventArgs e)<br /> {<br /> folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop;<br /> if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) {<br /> textBox1.Text = folderBrowserDialog1.SelectedPath;<br /> }<br /> }
4.顏色對話方塊
.AllowFullOpen: 允許自訂色彩
.AnyColor: 顯示所有顏色
.SolidColorOnly: 可選擇複雜顏色
樣本:
private void button5_Click(object sender, EventArgs e)<br /> {<br /> colorDialog1.AllowFullOpen = true; //允許自訂色彩<br /> colorDialog1.AnyColor = true; //顯示所有顏色<br /> colorDialog1.SolidColorOnly = false; //可選擇複雜顏色<br /> if (colorDialog1.ShowDialog() == DialogResult.OK) {<br /> if (richTextBox3.SelectedText== "") { //是否選擇了文本<br /> richTextBox3.SelectAll();<br /> richTextBox3.SelectionColor = colorDialog1.Color;<br /> }<br /> }<br /> }
5.字型對話方塊
二、菜單 MenuStrip
MenuStrip 控制項來設計功能表列,該控制項支援多重文件介面、菜單合并、工具提示和溢出等功能。
開發人員可通過添加訪問鍵、快速鍵、選中標記、映像和分割條來增加菜單可用性和可讀性。
控制項上右鍵進行插入分隔字元、設定表徵圖
三、工具列控制項 ToolStrip
四、狀態列控制項 StatusStrip
通常StatusStrip控制項由ToolStripStatusLabel對象組成,每個對象都可以顯示文本、映像或同時顯示。
此外,還可以包含ToolStripDropButton、ToolStripSplitButton、ToolStripProgressBar
private void MenuForm_Load(object sender, EventArgs e)<br /> {<br /> this.toolStripStatusLabel1.Text = "當前系統日期:"+DateTime.Now.ToShortDateString();<br /> }
五、自訂事件訊息處理,菜單中的開啟檔案歷程記錄
using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Linq;<br />using System.Text;<br />using System.Windows.Forms;<br />using System.IO;<br />namespace Dialogs<br />{<br /> public partial class MenuForm : Form<br /> {<br /> public MenuForm()<br /> {<br /> InitializeComponent();<br /> }<br /> private void MenuForm_Load(object sender, EventArgs e)<br /> {<br /> 檔案ToolStripMenuItem.DropDownItems.Clear(); //清空檔案下的功能表項目<br /> this.toolStripStatusLabel1.Text = "當前系統日期:"+DateTime.Now.ToShortDateString();<br /> ToolStripMenuItem menuitem1 = new ToolStripMenuItem("開啟"); //執行個體化開啟菜單<br /> 檔案ToolStripMenuItem.DropDownItems.Insert(0,menuitem1); //插入到“檔案”主菜單下拉表的第一個菜單位置<br /> menuitem1.Click += new EventHandler(開啟ToolStripMenuItem_Click); //指定單擊事件<br /> ToolStripMenuItem menuitem2 = new ToolStripMenuItem("退出"); //執行個體化退出菜單<br /> 檔案ToolStripMenuItem.DropDownItems.Insert(1,menuitem2); //插入到檔案主菜單第二項<br /> StreamReader sr = new StreamReader("d://Menu.ini"); //讀取流對象<br /> int i = this.檔案ToolStripMenuItem.DropDownItems.Count - 1; //菜單中放曆史檔案的位置<br /> while (sr.Peek() >= 0) {<br /> ToolStripMenuItem menuitem = new ToolStripMenuItem(sr.ReadLine()); //讀一行作為功能表項目<br /> this.檔案ToolStripMenuItem.DropDownItems.Insert(i, menuitem); //添加曆史菜單<br /> i++;<br /> menuitem.Click += new EventHandler(menuitem_Click); //指定單擊事件<br /> }<br /> sr.Close(); //關閉流<br /> }<br /> private void 開啟ToolStripMenuItem_Click(object sender, EventArgs e) {<br /> openFileDialog1.Filter = "所有檔案(*.*)|*.*";<br /> if(openFileDialog1.ShowDialog()==DialogResult.OK){<br /> StreamWriter s = new StreamWriter("d://Menu.ini",true); //曆史檔案<br /> s.WriteLine(openFileDialog1.FileName); //寫入檔案名稱<br /> s.Flush();<br /> s.Close();<br /> System.Diagnostics.Process.Start(openFileDialog1.FileName); //開啟指定的檔案<br /> }<br /> MenuForm_Load(sender,e); //重新載入菜單<br /> }<br /> private void menuitem_Click(object sender, EventArgs e) {<br /> try<br /> {<br /> ToolStripMenuItem menu = (ToolStripMenuItem)sender; //類型轉換,擷取單擊項<br /> System.Diagnostics.Process.Start(menu.Text); //開啟指定檔案<br /> }<br /> catch { }<br /> }</p><p> }<br />}<br />