如何将 DialogResult 结果放在前面

How to bring DialogResult result on front

如何把DialogResult放在前面。 下面是我的表格。我想把它放在所有其他应用程序的前面 运行。 但它在调试模式下工作但在"Run without debug mode"下不工作。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace XYZ
{
    public partial class Form2 : Form
    {

        [return: MarshalAs(UnmanagedType.Bool)]
        [DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        public static extern bool SetForegroundWindow(IntPtr hwnd);

        public Form2()
        {
            InitializeComponent();

        }
        static Form2 MsgBox; static DialogResult result = DialogResult.No;
        public static DialogResult Show( /*string Text, string Caption, string btnOK, string btnCancel */)
        {
                MsgBox = new Form2();
                MsgBox.FormBorderStyle = FormBorderStyle.None;
                result = DialogResult.No;
                MsgBox.TopMost = true;


                try
                {
                    SetForegroundWindow(MsgBox.Handle);
                    System.Media.SystemSounds.Beep.Play();
                    MsgBox.TopLevel = true;
                    MsgBox.ShowDialog(MsgBox.ParentForm);

                }
                catch (Exception ex)
                {

                    LogHelper.WriteFatalLog("Show", ex);
                }
                return result;

        }


        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void btnLoginF2_Click(object sender, EventArgs e)
        {
            Program.username = txtUserNameBtn.Text;
            Program.password = txtPassBtn.Text;


            result = DialogResult.Yes; MsgBox.Close();
        }
    }
}

我正在执行如下

                try
                {
                    Util.TaskHide(0);
                    Util.KillCtrlAltDelete();
                    Util.KillTaskManager();
                    //  ShowWindow(hwnd,0);
                }
                catch (Exception ex)
                {

                //    MessageBox.Show(ex.Message);
                    LogHelper.WriteErrorLog("Hide Kill Manage", ex);
                }
                Form2.Show();
               // Program.mfLogin.Hide();
                try
                {
                    Util.TaskHide(1);
                    Util.EnableCTRLALTDEL();

                }
                catch (Exception ex2)
                {

                    MessageBox.Show(ex2.Message);
                    LogHelper.WriteErrorLog("Show Pamper Leave", ex2);
                }

按照 here 所述使用 Form 的 Activate() 方法。

在评论中说; 如果这是活动应用程序,则激活表单会将其置于最前面。

希望有所帮助,