47 votes

La boîte de messagerie C # .Net n'est pas modale

Pourquoi la boîte de message C # .Net n'est-elle pas modale? Par accident, si la boîte de message se trouve derrière notre interface utilisateur principale, celle-ci ne répond pas tant que nous n'avons pas cliqué sur OK (dans notre boîte de message).

Toute solution de contournement autre que la création d'une boîte de message personnalisée?

Merci d'avance.

64voto

Charlie Points 9880

Vous devez affecter la propriété propriétaire de MessageBox à la fenêtre principale de l'interface utilisateur (regardez le troisième constructeur).

12voto

JamesM Points 758

Nouvelle application Winform C # simple>

 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;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string message = "You did not enter a server name. Cancel this operation?";
            string caption = "No Server Name Specified";
            MessageBoxButtons buttons = MessageBoxButtons.YesNo;
            DialogResult result;

            // Displays the MessageBox.
            result = MessageBox.Show(this, message, caption, buttons);
            if (result == DialogResult.Yes)
            {
                // Closes the parent form.
                this.Close();
            }
        }
    }
}
 

Comme l'indique Dusty, une boîte de dialogue est une boîte de dialogue modale. Spécifiez la propriété 'propriétaire'. << dans cet exemple, le propriétaire est désigné par le mot clé 'this'.

10voto

user1801179 Points 41

Pour obtenir une boîte de message modale système, définissez MessageBoxOptions.DefaultDesktopOnly .

6voto

Justin Niessner Points 144953

Un modal pop-up est techniquement définie comme un pop-up qui interrompt le flux normal de l'application...pas nécessairement un qui reste sur le dessus de toutes les autres fenêtres de sorte que le comportement que vous décrivez est correct pour un modal popup.

Fenêtre Modale

Voici un projet sur CodeProject qui tente d'imiter le "toujours au dessus" des fonctionnalités pour une MessageBox style de fenêtre Modale:

CodeProject: Supérieur MessageBox

5voto

Dusty Points 3210

Vous pouvez utiliser le propriétaire paramètre pour spécifier un objet particulier, qui met en œuvre la IWin32Window interface, pour placer la boîte de message avant. Une boîte de message est une boîte de dialogue modale, ce qui signifie pas d'entrée (clavier ou souris) peut se produire à l'exception des objets sur le formulaire modal. Le programme doit cacher ou de fermer un formulaire modal (en général en réponse à une action de l'utilisateur) avant l'entrée à une autre forme peut se produire.

MessageBox.Méthode Show

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X