### .Net WinForm学习笔记 #### 一、MDI窗体 MDI(Multiple Document Interface)窗体是一种常见的用户界面设计模式,在这种模式下,一个主窗体(MDI父窗体)可以包含多个子窗体(MDI子窗体)。这种设计常用于应用程序需要处理多个文档或视图的情况。 ##### 1. 创建MDI窗体的基本步骤 - **设置MDI容器**: 在主窗体中设置`IsMdiContainer`属性为`true`。 ```csharp public partial class frmMain : Form { public frmMain() { InitializeComponent(); this.IsMdiContainer = true; // 设置MDI容器 } } ``` - **创建并显示MDI子窗体**: ```csharp private void OpenChildForm() { Form childForm = new frmChild(); // 创建子窗体实例 childForm.MdiParent = this; // 设置MDI父窗体 childForm.Show(); // 显示子窗体 } ``` - **限制同时打开的子窗体数量**: 如果希望每次只能打开一个子窗体,则可以在打开新的子窗体之前先关闭当前活动的子窗体。 ```csharp private void OpenChildForm() { if (this.ActiveMdiChild != null) { this.ActiveMdiChild.Close(); // 关闭已打开的子窗体 } Form childForm = new frmChild(); // 创建子窗体实例 childForm.MdiParent = this; // 设置MDI父窗体 childForm.Show(); // 显示子窗体 } ``` ##### 2. MDI窗体背景色设置 MDI窗体的背景颜色可以通过获取`MdiClient`控件来设置。 ```csharp public partial class frmMain : Form { private System.Windows.Forms.MdiClient m_MdiClient; private void Form_Load(object sender, EventArgs e) { int iCnt = this.Controls.Count; for (int i = 0; i < iCnt; i++) { if (this.Controls[i].GetType() == typeof(System.Windows.Forms.MdiClient)) { m_MdiClient = (System.Windows.Forms.MdiClient)this.Controls[i]; break; } } m_MdiClient.BackColor = System.Drawing.Color.Silver; // 设置背景色 } } ``` #### 二、系统托盘图标 系统托盘图标是一种常用的设计元素,用于实现应用程序的最小化到任务栏的功能。 ##### 1. 创建托盘图标 使用`System.Windows.Forms.NotifyIcon`类创建托盘图标,并设置其`ContextMenuStrip`属性。 ```csharp public partial class frmMain : Form { private NotifyIcon noiMain; private ContextMenuStrip cmnMain; public frmMain() { InitializeComponent(); noiMain = new NotifyIcon(); cmnMain = new ContextMenuStrip(); noiMain.ContextMenuStrip = cmnMain; noiMain.Text = "应用名称"; noiMain.Icon = Properties.Resources.MyIcon; // 使用资源文件中的图标 noiMain.Visible = true; // 添加菜单项 cmnMain.Items.Add("打开", null, new EventHandler(mniOpen)); } private void frmMain_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.Hide(); noiMain.Visible = true; } } private void mniOpen(object sender, EventArgs e) { noiMain.Visible = false; this.Show(); this.Focus(); } private void noiMain_DoubleClick(object sender, EventArgs e) { mniOpen.PerformClick(); // 模拟点击“打开”菜单项 } } ``` #### 三、其他常用功能 除了上述功能外,还有许多其他常用的WinForm功能值得了解和使用。 ##### 1. 设置透明度 通过设置窗体的`BackColor`和`TransparencyKey`属性来实现窗体的半透明效果。 ```csharp public partial class frmMain : Form { public frmMain() { InitializeComponent(); this.TransparencyKey = Color.Aqua; // 设置透明色键 this.BackColor = Color.Aqua; // 设置背景色 } } ``` ##### 2. 始终位于最前 设置窗体的`TopMost`属性可以使窗体始终位于所有其他窗口之上。 ```csharp public partial class frmMain : Form { public frmMain() { InitializeComponent(); this.TopMost = true; // 设置窗体始终位于最前 } } ``` ##### 3. 打开外部程序 使用`System.Diagnostics.Process`类来启动外部程序。 ```csharp public partial class frmMain : Form { public frmMain() { InitializeComponent(); } private void OpenExternalProgram() { using (System.Diagnostics.Process proc = new System.Diagnostics.Process()) { proc.StartInfo.FileName = "notepad.exe"; // 指定要启动的程序 proc.Start(); // 启动程序 } } } ``` ##### 4. 工具栏 工具栏是一种常用的UI组件,通常包含一系列按钮或其他控件,用于提供快捷访问。 ```csharp public partial class frmMain : Form { private void HandleToolbarButtonClick(object sender, EventArgs e) { switch (ToolbarName.Buttons.IndexOf(e.Button)) { case 0: // 第一个按钮 // 相应代码 break; case 1: // 第二个按钮 // 相应代码 break; default: // 默认情况 // 相应代码 break; } } } ``` ##### 5. 确认对话框 在关闭窗体之前显示确认对话框,以便用户确认是否关闭窗体。 ```csharp public partial class frmMain : Form { protected override void OnClosing(CancelEventArgs e) { DialogResult result = MessageBox.Show(this, "您确定要关闭吗?", "关闭提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (result == DialogResult.Cancel) { e.Cancel = true; // 取消关闭 } else { e.Cancel = false; // 允许关闭 } } } ``` 以上就是关于.NET WinForm的一些基础知识点介绍,这些技术点涵盖了MDI窗体的创建与管理、系统托盘图标的使用、以及其他一些常用功能的实现方法。这些知识点是开发.NET WinForm应用程序时非常重要的基础知识。
- 粉丝: 1
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助