一、对话框
Windows提供的标准对话框:打开文件、另存为、浏览文件夹、颜色对话框、字体对话框
C#提供了两种特殊对话框:消息对话框、关于对话框
1. 打开对话框 OpenFileDialog
(1)Filter属性: Excel 文件 |*.xls ”,前面的“ Excel 文件”成为标签,是一个可读的字符串,可以自定义,“ |*.xls ”是筛选器,表示筛选文件夹中后缀名为 .xls 的文件 , “ * ”表示匹配 Excel 文件名称的字符串。
(2)Multiselect:多选
(3)FileNames属性:用来获取对话框中所有选定文件的文件名。每个文件名都既包含文件路径又包含文件扩展名。如果未选定文件,该方法将返回空数组。
(4)RestoreDirectory属性:用来获取或设置一个值,该值指示对话框在关闭前是否还原当前目录。假设用户在搜索文件的过程中更改了目录,且该属性值为 true,那么,对话框会将当前目录还原为初始值,若该属性值为 false,则不还原成初始值。默认值为 false。
运行:通用对话框对象名.ShowDialog();
返回值:如果单击对话框中的【确定】按钮,则返回值为 DialogResult.OK;否则返回值为DialogResult.Cancel。
private void button1_Click(object sender, EventArgs e) { openFileDialog1.Title = "打开文件.."; //窗口标题,默认为“打开” openFileDialog1.Filter = "文档(*.doc;*.xls)|*.doc;*.xls|图片(*.png;*.pic;*.jpg)|*.png;*.pic;*.jpg"; openFileDialog1.FilterIndex = 1; //当前选定的过滤器索引 openFileDialog1.InitialDirectory = Application.ExecutablePath; //初始目录 openFileDialog1.Multiselect = true; //是否多选 if (openFileDialog1.ShowDialog() == DialogResult.OK) //是否选择了文件 { for (int i = 0; i < openFileDialog1.FileNames.Length; i++) { richTextBox1.Text += openFileDialog1.FileNames[i] + "/n"; } } }
2.另存为对话框 SaveFileDialog
示例:一个按钮打开一个文本文件,把内容显示在RichTextBox控件中;另一个按钮将RichTextBox内容写入文本文件中。
using System.IO;
private void button2_Click(object sender, EventArgs e) { openFileDialog2.Filter = "文本文件(*.txt)|*.txt"; if (openFileDialog2.ShowDialog() == DialogResult.OK) { StreamReader sreader = new StreamReader(openFileDialog2.FileName,Encoding.Default); richTextBox2.Text = sreader.ReadToEnd(); sreader.Close(); } } private void button3_Click(object sender, EventArgs e) { saveFileDialog2.Filter = "文本文件(*.txt)|*.txt"; if (saveFileDialog2.ShowDialog() == DialogResult.OK) { StreamWriter swriter = new StreamWriter(saveFileDialog2.FileName,true); swriter.Write(richTextBox2.Text); swriter.Close(); } }
3.浏览文件夹
选择的路径:对象.SelectedPath
初始路径:对象.RootFolder
private void button4_Click(object sender, EventArgs e) { folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop; if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = folderBrowserDialog1.SelectedPath; } }
4.颜色对话框
.AllowFullOpen: 允许自定义颜色
.AnyColor: 显示所有颜色
.SolidColorOnly: 可选择复杂颜色
示例:
private void button5_Click(object sender, EventArgs e) { colorDialog1.AllowFullOpen = true; //允许自定义颜色 colorDialog1.AnyColor = true; //显示所有颜色 colorDialog1.SolidColorOnly = false; //可选择复杂颜色 if (colorDialog1.ShowDialog() == DialogResult.OK) { if (richTextBox3.SelectedText== "") { //是否选择了文本 richTextBox3.SelectAll(); richTextBox3.SelectionColor = colorDialog1.Color; } } }
5.字体对话框
二、菜单 MenuStrip
MenuStrip 控件来设计菜单栏,该控件支持多文档界面、菜单合并、工具提示和溢出等功能。
开发人员可通过添加访问键、快捷键、选中标记、图像和分割条来增加菜单可用性和可读性。
控件上右键进行插入分隔符、设置图标
三、工具栏控件 ToolStrip
四、状态栏控件 StatusStrip
通常StatusStrip控件由ToolStripStatusLabel对象组成,每个对象都可以显示文本、图像或同时显示。
此外,还可以包含ToolStripDropButton、ToolStripSplitButton、ToolStripProgressBar
private void MenuForm_Load(object sender, EventArgs e) { this.toolStripStatusLabel1.Text = "当前系统日期:"+DateTime.Now.ToShortDateString(); }
五、自定义事件消息处理,菜单中的打开文件历史记录
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; using System.IO; namespace Dialogs { public partial class MenuForm : Form { public MenuForm() { InitializeComponent(); } private void MenuForm_Load(object sender, EventArgs e) { 文件ToolStripMenuItem.DropDownItems.Clear(); //清空文件下的菜单项 this.toolStripStatusLabel1.Text = "当前系统日期:"+DateTime.Now.ToShortDateString(); ToolStripMenuItem menuitem1 = new ToolStripMenuItem("打开"); //实例化打开菜单 文件ToolStripMenuItem.DropDownItems.Insert(0,menuitem1); //插入到“文件”主菜单下拉表的第一个菜单位置 menuitem1.Click += new EventHandler(打开ToolStripMenuItem_Click); //指定单击事件 ToolStripMenuItem menuitem2 = new ToolStripMenuItem("退出"); //实例化退出菜单 文件ToolStripMenuItem.DropDownItems.Insert(1,menuitem2); //插入到文件主菜单第二项 StreamReader sr = new StreamReader("d://Menu.ini"); //读取流对象 int i = this.文件ToolStripMenuItem.DropDownItems.Count - 1; //菜单中放历史文件的位置 while (sr.Peek() >= 0) { ToolStripMenuItem menuitem = new ToolStripMenuItem(sr.ReadLine()); //读一行作为菜单项 this.文件ToolStripMenuItem.DropDownItems.Insert(i, menuitem); //添加历史菜单 i++; menuitem.Click += new EventHandler(menuitem_Click); //指定单击事件 } sr.Close(); //关闭流 } private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.Filter = "所有文件(*.*)|*.*"; if(openFileDialog1.ShowDialog()==DialogResult.OK){ StreamWriter s = new StreamWriter("d://Menu.ini",true); //历史文件 s.WriteLine(openFileDialog1.FileName); //写入文件名 s.Flush(); s.Close(); System.Diagnostics.Process.Start(openFileDialog1.FileName); //打开指定的文件 } MenuForm_Load(sender,e); //重新加载菜单 } private void menuitem_Click(object sender, EventArgs e) { try { ToolStripMenuItem menu = (ToolStripMenuItem)sender; //类型转换,获取单击项 System.Diagnostics.Process.Start(menu.Text); //打开指定文件 } catch { } } } }