2017-10-18 13 views
0

Si je fais une fenêtre non-modale, j'obtiens des problèmes différents. Tout d'abord, j'ouvre la version expérimentale de Visual Studio et ouvre une solution où je navigue vers une page C#. Puis j'ouvre la fenêtre WPF de mon extension où je peux heureusement taper dans TextBoxes dans cette fenêtre WPF. Cependant, chaque fois que je clique sur le retour arrière [< -] ou sur les touches [delete], cela n'affecte pas la zone de texte WPF actuelle mais la fenêtre de code C# précédemment ouverte dans la solution actuelle. J'ouvre ma fenêtre ainsi:VSIX et VS SHELL: problèmes avec window show()

window = new MyWindow() 
window.show(); 

Je sais que je pourrais résoudre mon problème avec:

uiShell.EnableModeless(0); 
window = new MyWindow() 
window.ShowDialog(); 
uiShell.EnableModeless(1); 

Mais je ne veux pas cette solution. Je veux naviguer dans le fichier dans le shell de Visual Studio et en même temps utiliser mon addin sans avoir de problèmes avec les entrées. Comment puis-je résoudre ce problème en utilisant Show()?

+0

Vous devez hériter de DialogWindow – ErikEJ

+0

Est-ce que ma fenêtre devrait hériter de DialogWindow et dois-je utiliser Window.Show()? – user2837896

+0

Ok, j'hérite de DialogWindow. Mais avec Show() j'ai le même problème. J'ouvre mon addin, j'écris dans une zone de texte, puis je clique sur vs shell (C# fichier): Si je supprime sur ma zone de texte le curseur reste sur le fichier C# – user2837896

Répondre

0

Si vous souhaitez afficher une fenêtre "non-modale", il doit s'agir d'une fenêtre d'outils ou d'une fenêtre de document. Sinon, VS ne le saura pas, et vous rencontrerez toutes sortes de problèmes sans recevoir de messages, d'événements, d'accélérateurs, etc ...

Si vous voulez une fenêtre modale, utilisez la classe DialogWindow comme mentionné précédemment pour s'assurer que l'IDE peut correctement désactiver/activer ses fenêtres lorsque la boîte de dialogue est affichée ou rejetée.

Sincèrement,