none
Fenetre modale (topmost, showdialog) et probleme de focus "volé" RRS feed

  • Discussion générale

  • Bonjour.

    Nous développons un "composant local", qui se lance au démarrage de la session Windows (W7, WinXP) et se place dans la system tray.

    Ce composant peut être appelé par un autre programme (via client/serveur TCP/IP sur 127.0.0.1) et, si c'est le cas, il va afficher une popup dite "modale" pour que l'utilisateur saisisse une information.

    Pour cela, nous utilisons les Windows Forms, et notamment la méthode "showDialog".

    Problème rencontré: impossible de mettre le focus sur la popup, et sur le TextBox de saisie. Nous avons à peu près tout essayé (TopMost, BringToFront, SetWindowPos : zOrder, Focus, Activate etc,...), mais nous n'arrivons pas à nos fins.

    Comportements aléatoires constatés :

    - la fenêtre de notre processus est topmost et modale, mais le champ texte de saisie n'a pas le focus (il faut cliquer dans la fenêtre ou dans le TextBox pour avoir le focus)

    - la fenêtre de notre processus apparait derrière la fenêtre principale du processus qui a appelé le notre (via TCP/IP)

    Environnements :

    -développement : W7, VS2010, .Net 2, C#

    - tests : WinXP, W7

    merci de votre aide,

    Michel Szybist
    In-Webo

     

    • Type modifié Ciprian Duduiala mardi 27 septembre 2011 13:28 attente de feedback
    mercredi 21 septembre 2011 12:26

Toutes les réponses

  • Bonjour,

    Avez-vous essayé de passer en paramètre de ShowDialog(), l'instance de la fenêtre courante (ou parente) :

    maFenêtre.ShowDialog(monParent)

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5

    mercredi 21 septembre 2011 20:44
    Modérateur
  • Bonjour, Michel,

    Est-ce que vous avez testé la solution proposée ? Merci de tenir la communauté informée sur la suite de vos démarches.

     

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    vendredi 23 septembre 2011 06:39
  • Bonjour, et désolé pour cette réponse un peu tardive, mais j'attendais le retour des testeurs, et j'allais vous donner mon feedback justement à l'instant ! ;)

    Non, cette approche n'a pas résolu le problème : la fenêtre apparait *derrière* la fenêtre principale du processus qui était en premier plan au moment de l'appel.

    Plus de précisions :

    - la "fenêtre" principale de notre application est une icone de la "system tray"

    - la fenêtre principale du processus qui emet la requête HTTP sur TCP/IP est un navigateur Web

    M. Szybist

     

    vendredi 23 septembre 2011 06:56
  • Bonjour,

    Pouvez-vous nous soumettre un petit projet qui reproduirait le problème ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    dimanche 25 septembre 2011 09:06
    Modérateur
  • Bonjour,

    Voici : http://dl.dropbox.com/u/5599696/testFocus2.zip


    exemple_reprod_focus__3.zip : les sources de l'application
    WindowsFormsApplication1.exe : l'executable avec son icone (iw.ico)
    ( InWebo-Firefox-2.0-RC2.xpi : une extension pour Mozilla Firefox permettant aussi de reproduire le probleme )

    Premier scenario :
    - lancer Internet Explorer
    - lancer WindowsFormsApplication1.exe
    - aller à : http://localhost:65432/
    - la premiere popup (au moins, la plupart du temps les suivantes aussi) apparait soit derriere le navigateur, soit le champ texte n'a pas le focus


    Second scenario :
    - lancer Mozilla Firefox
    - installer l'extension pour Mozilla Firefox : (une extension est en cours d'écriture pour Internet Explorer) : InWebo-Firefox-2.0-RC2.xpi
    - lancer WindowsFormsApplication1.exe
    - cliquer sur launch
    - la premiere popup (au moins, la plupart du temps les suivantes aussi) apparait soit derriere le navigateur, soit le champ texte n'a pas le focus

    M. Szybist

    mercredi 28 septembre 2011 07:54
  • Bonjour,

     

    Avez-vous pu reproduire le comportement décrit ?

    mercredi 5 octobre 2011 12:27