Versteckt Popup-Steuerelement, wenn andere Fenster im Fokus sind

8

Ich habe ein benutzerdefiniertes Benutzersteuerelement, das versucht, die automatische Vervollständigung für ein Textfeld neu zu erstellen. Wenn der Benutzertyp verwendet wird, wird der Text zum Filtern einer bereitgestellten Sammlung von Elementen verwendet, und dann zeigt ein Popup eine ListBox mit Elementen an, die mit dem eingegebenen Benutzer übereinstimmen.

Wenn der Benutzer beschließt, von der Anwendung in ein anderes Fenster zu wechseln (Browser, MS Word, irgendetwas!), bleibt das Popup auf jedem anderen Fenster!

Auch wenn ich mein Fenster (das das benutzerdefinierte Steuerelement enthält) mit geöffnetem Popup verschiebe, bleibt das Popup an seinem Platz (und folgt nicht dem Fenster)! Es ist ein lustiges, aber offensichtlich nicht akzeptables Verhalten. Ich habe mich umgesehen, aber nur einen Beitrag gefunden, der zwei Jahre lang unbeantwortet geblieben ist: (

    
Alexandra 23.04.2009, 15:57
quelle

3 Antworten

13

Eigentlich habe ich nicht bemerkt, dass ich die Eigenschaft StaysOpen des Popup auf true gesetzt habe.

%Vor%

macht tatsächlich den Trick für mich.

    
Alexandra 28.04.2009, 13:06
quelle
4

Ich hatte das gleiche Problem in einem ähnlichen Szenario. Was ich getan habe, war, dass ich alle möglichen "verlorenen Fokus" -Ereignisse des Controls abonniert habe und auch das Fenster bekommen habe, das das Steuerelement beherbergt und seine GotMouseCapture- und LocationChanged-Ereignisse abonniert hat. Ereignisbehandlungsroutinen all dieser Ereignisse setzen die IsOpen-Eigenschaft des Popups auf false.

Sie können das Hosting-Fenster mit diesem erhalten:

%Vor%

Der ganze andere Code ist einfach eine Menge Ereignisse zu abonnieren, um dasselbe zu tun.

P.S. Ich sage nicht, dass es eine schöne oder optimale Lösung ist, aber es funktioniert gut für mich:)

    
arconaut 23.04.2009 18:39
quelle
0

Laut Popup-Dokumentation :

  

Wenn Popup auf dem Bildschirm angezeigt wird, positioniert es sich nicht neu, wenn das übergeordnete Element neu positioniert wird.

Es sieht also nicht so aus, als wäre es ein sehr guter Kandidat für eine Autocomplete-Textbox. Ich denke, die Klasse ist eher dazu gedacht, Informationen zu zeigen, wenn man den Mauszeiger über ein Objekt bewegt.

    
RandomEngy 23.04.2009 17:45
quelle

Tags und Links