c# winform在窗体topmost=true的情况下调用exe
来源:互联网 发布:在线视频cms 编辑:程序博客网 时间:2024/05/21 11:00
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); //窗体 this.TopMost = true;//将窗体的topmost设为true this.Size = new Size(800, 600); //panel Panel pnl = new Panel(); pnl.BorderStyle = BorderStyle.FixedSingle; pnl.Size = new Size(764, 500); pnl.Location = new Point(10, 10); this.Controls.Add(pnl); //WebBrowser WebBrowser wb = new WebBrowser(); wb.Navigate("http://www.baidu.com"); wb.Dock = DockStyle.Fill; wb.ScrollBarsEnabled = false; pnl.Controls.Add(wb); //画图 Button btnMspaint = new Button(); btnMspaint.Text = "画图"; btnMspaint.Location = new Point(10, 10 + pnl.Height + 5); btnMspaint.Click += new EventHandler(btnMspaint_Click); this.Controls.Add(btnMspaint); } private delegate void MyDelegate(); /// <summary> /// 画图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void btnMspaint_Click(object sender, EventArgs e) { ////方法一(缺点:在调用mspaint.exe时主体界面会变得模糊) //this.TopMost = false;//将窗体的topmost设为false ////启动进程打开电子画笔 //System.Diagnostics.Process process = new System.Diagnostics.Process(); //process.StartInfo.FileName = Application.StartupPath + @"\exe\mspaint.exe"; //process.Start(); //process.WaitForExit();//等待关闭电子画笔 //process.Close();//关闭进程 //this.TopMost = true;//将窗体的topmost设为true //方法二(缺点:在调用mspaint.exe时主界面可以被选择并且可以被关闭) System.Diagnostics.Process process = new System.Diagnostics.Process(); process.StartInfo.FileName = Application.StartupPath + @"\exe\mspaint.exe"; process.EnableRaisingEvents = true; process.Exited += new EventHandler(process_Exited); process.Start(); this.TopMost = false; } /// <summary> /// 调用委托将窗体的topmost=true /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void process_Exited(object sender, EventArgs e) { MyDelegate myDelegate = new MyDelegate(SetFormTopMostToTrue); this.Invoke(myDelegate); } private void SetFormTopMostToTrue() { this.TopMost = true; } }}