2016-08-27 2 views
-1

Comment amener DialogResult à l'avant. Ci-dessous est mon formulaire. Je veux l'amener à l'avant de toutes les autres applications. Mais il fonctionne en mode débogage mais ne fonctionne pas dans "Exécuter sans mode de débogage".Comment amener le résultat de DialogResult à l'avant

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

je suis exécutais comme ci-dessous

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

Arrêtez d'écrire ce code mauvais qui tentent de pirater le système et est bien plus nécessaire que compliquer et ne jetez même pas correctement des objets ... – Phil1970

+0

En général, il est une mauvaise conception de mettre un formulaire devant d'autres applications. Vous devriez éviter d'écrire des applications qui ne respectent pas le système et les utilisateurs. – Phil1970

+0

frère chill, c'est la demande du client. –

Répondre

2

méthode Activate() Utilisez le formulaire comme dit here.

À la remarque, il est dit; Activer un formulaire l'amène au premier plan s'il s'agit de l'application active.

espoir aide,