C# 如何在活动形式中获得焦点?

C# 如何在活动形式中获得焦点?,c#,.net,winforms,C#,.net,Winforms,我制作了一个简单的winforms应用程序,它只包含一个表单。问题是,当我单击可执行文件时,我希望激活的表单得到关注,而不是应用程序的多个实例。我试图用这种方法解决这个问题。这只会阻止多个实例,但无法将焦点放在激活的表单上。此代码来自Program.cs文件 namespace Shutdown_Scheduler { static class Program { [STAThread] static void Main() {

我制作了一个简单的
winforms
应用程序,它只包含一个表单。问题是,当我单击可执行文件时,我希望激活的表单得到关注,而不是应用程序的多个实例。我试图用这种方法解决这个问题。这只会阻止多个实例,但无法将焦点放在激活的表单上。此代码来自
Program.cs
文件

namespace Shutdown_Scheduler
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            string processName = Process.GetCurrentProcess().ProcessName;
            Process[] processCollection = Process.GetProcessesByName(processName);
            if (processCollection.Length > 1)
            {
                Process.GetCurrentProcess().Kill();
                ProgramEntry();
            }
            else
            { 
                ProgramEntry();
            }
        }
        static void ProgramEntry()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
}

此线程将帮助您启用窗体的“带到顶部”属性,使其具有焦点。请参阅此处:。我的答案似乎有些复杂,但它允许激活应用程序的单个实例,即使它的窗口最小化或隐藏(另外,我想展示一种UI自动化方式:)。有关简化方法,请参见Hans Passant的评论。它指向了他对此问题的一个答案:。此线程应该可以帮助您启用窗体的“带到顶部”属性,使其具有焦点。请参阅此处:。我的答案似乎有些复杂,但它允许激活应用程序的单个实例,即使它的窗口最小化或隐藏(另外,我想展示一种UI自动化方式:)。有关简化方法,请参见Hans Passant的评论。它指出了他在这个问题上的一个答案:。