c#---windows窗体GUI--软件模型3--常见小功能
1.判断显示哪一个panel并验证是否激活
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/// <summary> /// 控制显示哪一个panel /// </summary> /// <param name="panelname"> panel名称</param> public void ShowPanel(string panelname) { foreach (Control c in this.Controls) { if (c is Panel) { Panel p = c as Panel; //取出Panel //p.BackColor = Color.Red; // 改变Panel的颜色 if (p.Name.Equals(panelname)) { //判断是否激活 if (ct.IsAction()) { p.Visible = true; } } else { p.Visible = false; } } } }
2.重启软件验证是否激活
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//重启验证 重启程序自身 public void RestartAppcation() { if (MessageBox.Show("请重启验证是否成功", "重新启动", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RtlReading) == DialogResult.OK) { Application.ExitThread(); Thread thtmp = new Thread(new ParameterizedThreadStart(run)); object appName = Application.ExecutablePath; Thread.Sleep(1); thtmp.Start(appName); } }
3.退出程序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//********关闭程序 /// <summary> /// 1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; //2.Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出; //3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题; //4.System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void 关闭程序ToolStripMenuItem_Click(object sender, EventArgs e) { System.Environment.Exit(0); }
4.托盘提示信息
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// #region 托盘提示 private void Form1_Load(object sender, EventArgs e) { //设置鼠标放在托盘图标上面的文字 this.notifyIcon1.Text = "工具箱~~~"; //动画显示 FormsClass fcs = new FormsClass(); fcs.StartRightBottem2(this.Width, this.Height, this, this); } //#region 隐藏任务栏图标、显示托盘图标 private void Form1_Resize(object sender, EventArgs e) { //判断是否选择的是最小化按钮 if (WindowState == FormWindowState.Minimized) { //托盘显示图标等于托盘图标对象 //注意notifyIcon1是控件的名字而不是对象的名字 //notifyIcon1.Icon = ico; //this.Hide(); //隐藏任务栏区图标 this.ShowInTaskbar = false; //图标显示在托盘区 notifyicon.Visible = true; } }
5.托盘右键事件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 //*********************************托盘右键 2 //托盘右键 3 //http://jingyan.baidu.com/article/624e7459a9fae934e9ba5a64.html 4 private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) 5 { 6 System.Environment.Exit(0); 7 } 8 //*********************************托盘右键 9 private void 显示主界面ToolStripMenuItem_Click(object sender, EventArgs e) 10 { 11 //判断是否已经最小化于托盘 12 if (WindowState == FormWindowState.Minimized) 13 { 14 //this.Show(); 15 //还原窗体显示 16 WindowState = FormWindowState.Normal; 17 //激活窗体并给予它焦点 18 this.Activate(); 19 //任务栏区显示图标 20 this.ShowInTaskbar = true; 21 //托盘区图标隐藏 22 notifyicon.Visible = false; 23 } 24 } 25 //鼠标右键 26 private void notifyIcon1_MouseClick(object sender, MouseEventArgs e) 27 { 28 //if (MessageBox.Show("是否确认退出程序?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) 29 //{ 30 // // 关闭所有的线程 31 // this.Dispose(); 32 // this.Close(); 33 //} 34 35 //if (e.Button == MouseButtons.Right) 36 //{ 37 // //MessageBox.Show("youjian"); 38 //} 39 } 40 //#region 还原窗体 41 private void notifyIcon1_DoubleClick(object sender, EventArgs e) 42 { 43 //判断是否已经最小化于托盘 44 if (WindowState == FormWindowState.Minimized) 45 { 46 //this.Show(); 47 //还原窗体显示 48 WindowState = FormWindowState.Normal; 49 //激活窗体并给予它焦点 50 this.Activate(); 51 //任务栏区显示图标 52 this.ShowInTaskbar = true; 53 //托盘区图标隐藏 54 notifyicon.Visible = false; 55 } 56 } 57 //***************************************************托盘end