[已解决问题] 只启动一个窗体,如果再次启动则激活该窗体的问题
提问时间: 2008-04-14 14:02
浏览:303 次

在WinFrom下做了一个程序,该程序启动以后,如果再次启动则激活上次启动的窗口.我是这样做的:

static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            bool b;
            Mutex m = new Mutex(true, "MyForm", out b);
            if (b)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(MyForm.OnlyForm);
            }
            else
            {

                MyForm.OnlyForm.Activate();
                Application.Exit();
            }
        }
    }

 

Form中应用了单件模式,代码如下:

 public partial class MyForm : Form
    {
        readonly static MyForm myForm = new MyForm();

        public MyForm()
        {
            InitializeComponent();
        }
        static MyForm()
        {
            //静态构造函数;
        }
 &

提问者:侯垒 - 小虾三级

问题补充:怎么回事?我的代码明明写的好好的,怎么少了一部分?
Form中代码如下:
public partial class MyForm : Form
{
readonly static MyForm myForm = new MyForm();

public MyForm()
{
InitializeComponent();
}
static MyForm()
{
//静态构造函数;
}
public static MyForm OnlyForm
{
get
{
return myForm;
}
}
}

最佳答案
这个肯定是不行的。
每个进程都有自己的地址空间,static成员也只能在同一个进程内有效。

请试一下这里的代码:
http://www.devhood.com/Tutorials/tutorial_details.aspx?tutorial_id=711
2008/4/14 18:31:39 回答者:deerchao
其它回答(1)
用Win32API吧...
先FindWindow(), 找到的话, SetForeground()就好了, 关于具体Win32API怎么调用, 就是查MSDN的事情了.
3个月前   回答者:rex xiang - 菜鸟二级
评论
4个月前   侯垒 :
已经实现了该功能.
http://www.cnblogs.com/houleixx/archive/2008/04/15/startonly.html
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除