Simuler un ShowDialog()

lbensch Messages postés 55 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 10 juin 2010 - 9 juin 2010 à 15:44
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 - 16 juin 2010 à 15:57
Bonjour,

J'ai des fenêtres qui jusqu'à maintenant s'ouvrait avec ShowDialog, or, mes utilisateurs se plaignaient de ne plus avoir accès aux autres fenêtres. Du coup, j'ai surchargé la méthode ShowDialog() pour effectuer un Show() avec un boucle pour attendre un DialogResult.

public new DialogResult ShowDialog(IWin32Window owner)

{
Show(owner);
while (DialogResult == DialogResult.None)
{
System.Threading.Thread.Sleep(100);
Application.DoEvents();
}
return DialogResult;
}/code

Cette fonction réponds au besoin, cependant, j'ai un petit soucis. Lorsque la fenêtre s'ouvre, elle n'a pas le focus, je suis obligé de cliquer une fois pour activer la fenêtre, puis une autre fois pour 'Ok'.

Est-ce que ma méthode est bonne, que dois-je faire pour avoir le focus immédiatement à l'ouverture (j'ai bien évidemment essayé BringToFront(), Focus(), Activate() mais rien)

Merci de bien vouloir m'aider.

3 réponses

cs_youma85 Messages postés 82 Date d'inscription dimanche 18 février 2007 Statut Membre Dernière intervention 28 avril 2011 1
9 juin 2010 à 17:28
Pourquoi vous n'utilisez pas form.Show(); à la place de .ShowDialog()
0
lbensch Messages postés 55 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 10 juin 2010
10 juin 2010 à 08:56
En fait, le code appelant l'ouverture des fenêtres (assimilée modal) existe déjà et attend le DialogResult pour effectuer des actions (il y a près de 500 fonctions) du coup, il me faut trouver une solution qui ne m'oblige pas à modifier ces 500 fonctions.
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
16 juin 2010 à 15:57
bonjour,

et de mettre après le show, un petit appel à SetForegroundWindow (win32) ?
0
Rejoignez-nous