J'ai un wpf Usercontrol, à l'intérieur j'utilise un pdfviewer Winforms pour afficher les fichiers pdf. J'ai aussi deux boîtes de texte pour entrer les détails du document. enfin, un popup qui affiche ce contrôle utilisateur. Le problème est que lorsque j'essaie de taper quelque chose dans les zones de texte, ntn arrive. quand je fais un clic droit sur une zone de texte, je peux voir le menu contextuel avec des options couper, copier et coller. Après googling peu, j'ai trouvé quelque chose comme ci-dessous, Forms.Integration.WindowsFormsHost.EnableWindowsFormsInterop(), j'ai placé cette ligne dans l'événement chargé, mais cela ne fonctionne pas. quelqu'un peut-il faire face à un problème simillar et avoir des solutions. Merci. ReyWindowsFormsHost Winform problème de contrôle pdfviewer
0
A
Répondre
1
J'ai rencontré ce problème il y a un certain temps. Si je me souviens bien, c'était un bug dû à la boucle de message WPF de haut niveau qui ne jouait pas bien avec la boucle de message WinForms.
La solution que j'ai utilisée était de changer ma couche externe d'une fenêtre WPF à un formulaire WinForms. En d'autres termes, je l'ai remplacé
new Window { Content = CreateContent(), Title = title }.Show();
avec
new ElementHostForm(CreateContent(), title).Show();
en utilisant une classe comme ceci:
class ElementHostForm : System.Windows.Forms.Form
{
ElementHost _host;
public WinFormsWindow(UIElement content, string title)
{
_host = new ElementHost { Child = content };
Controls.Add(host);
content.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
if(content.DesiredSize.Width > 100 && content.DesiredSize.Height > 100)
ClientSize = _host.Size =
new Size((int)content.DesiredSize.Width, (int)content.DesiredSize.Height));
content.ClearValue(FrameworkElement.WidthProperty);
content.ClearValue(FrameworkElement.HeightProperty);
Title = title;
}
protected override void OnResize(EventArgs e)
{
if(!ClientSize.IsEmpty) _host.Size = ClientSize;
base.OnResize(e);
}
}
Cela a fonctionné autour du bug en permettant WinForms d'avoir la boucle de message externe.
Ce changement a été très facile pour moi parce que j'avais déjà mon contenu de niveau supérieur dans un UserControl séparé (pas une fenêtre). Si votre contenu de niveau supérieur est une fenêtre, vous devrez peut-être refactoriser.
Questions connexes
- 1. WPF Popup et WindowsFormsHost Problème
- 2. WPF TabControl avec WindowsFormsHost problème inconnu de bordure
- 3. Contrôle de superposition sur Winform
- 4. Contrôle WYSIWYG pour Winform
- 5. C# personnalisée contrôle WinForm
- 6. Invalidation/Problème de peinture avec Control (WinForm)
- 7. WinForm Rafraîchissant Problème
- 8. comment appeler WPF contrôle utilisateur de WinForm
- 9. comparaison de WPF avec le contrôle WINFORM
- 10. Alternative Boutons de contrôle pour winform?
- 11. problème Insertion Report Viewer dans WPF Application utilisant WindowsFormsHost
- 12. Comment un contrôle personnalisé Winform peut-il notifier un autre contrôle Winform personnalisé?
- 13. C# WinForm MenuStrip problème fusion
- 14. Winform create table dans le contrôle RichTextBox
- 15. Ajouter des éléments au contrôle Microsoft WinForm
- 16. Ajouter le contrôle de WindowsForms chargé dynamiquement à un WindowsFormsHost WPF
- 17. winform: problème de liaison avec DropDownList
- 18. Problème de sablier dans une application WinForm
- 19. Problème de style Winform: style Windows classique?
- 20. Hébergement contrôle personnalisé dans DataGridView - C# WinForm
- 21. Winform ne pas rendre les modifications de contrôle
- 22. Recommandations pour un contrôle de graphique interactif WinForm
- 23. WinForm contrôle de texte qui affiche la limite
- 24. Comment les contrôles WinForms dans WPF WindowsFormsHost distant?
- 25. WinForm CheckListBox problème avec l'événement ItemCheck
- 26. WinForm Contrôle la liaison à une liste <T> problème
- 27. WPF: Rendre la propriété Target référence à un contrôle dans WindowsFormsHost
- 28. Mettre à jour le contrôle DataGrid WinForm dans .Net 2003
- 29. WinForm avec UserControl contenant DataGridView causes Problème avec le concepteur
- 30. problème de contrôle gridview