Как вывести результат DialogResult на передний план?

Как вывести DialogResult на передний план. Ниже моя форма. Я хочу вывести его на передний план всех остальных приложений. Но он работает в режиме отладки, но не работает в режиме "Запуск без режима отладки".

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);
                }

1 ответ

Решение

Используйте форму Activate() метод, как сказано здесь.

В комментариях говорится; Активация формы выводит ее на передний план, если это активное приложение.

Надежда помогает,

Другие вопросы по тегам