2016-04-21 8 views
1

Ich mache ein Outlook hinzufügen, dass, wenn ein Benutzer das Add-In startet, ein Windows-Formular kommt. Innerhalb dieses Windows-Formulars werde ich basierend auf der Benutzereingabe dynamisch Benutzersteuerelemente hinzufügen.Hinzufügen von Benutzersteuerelementen (WPF) zu Panel in Windows Form C#

Das Problem, das ich habe, ist das Steuerelement programmgesteuert hinzufügen. Alles funktioniert gut, wenn ich einfach einen Standard TextBox hinzufüge, aber wenn ich das Benutzersteuerelement hinzufüge, bekomme ich die folgende Ausnahme;

Die beste überladene Methode Spiel für 'System.Windows.Forms.Control.ControlCollection.Add (System.Windows.Forms.Control)' hat einige ungültige Argumente

von ‚nicht konvertieren kann OutlookAddIn .Controls.RForm‘auf‚System.Windows.Forms.Control‘

ich habe versucht, das Gießen der Steuerung an einen UserControl aber eine neue Ausnahmen entstanden ist.

Haupt Form:

using System.Windows.Forms; 

namespace OutlookAddIn 
{ 
    public partial class Main : Form 
    { 
     public Main() 
     { 
      InitializeComponent(); 
     } 

     private void lblReactiveMaintenance_Click(object sender, EventArgs e) 
     { 
      OutlookAddIn.Controls.RForm reactiveMaintForm = new OutlookAddIn.Controls.RForm(); 
      reactiveMaintForm.Name = "rForm"; 
      pnlMain.Controls.Add(reactiveMaintForm); 
     } 
    } 
} 

User Control:

namespace OutlookAddIn.Controls 
{ 
    /// <summary> 
    /// Interaction logic for RForm.xaml 
    /// </summary> 
    public partial class RForm : UserControl 
    { 
     public RForm() 
     { 
      InitializeComponent(); 
     } 
    } 
} 
+0

Mögliche Duplikat [Setzen Sie WPF-Steuerelement in ein Windows Form Forms] (http://stackoverflow.com/questions/5053501/put-wpf-control-into-a-windows-forms-form) –

Antwort

2

Sie sollten die Elementhost-Steuerelement verwenden, um die WPF-Steuerelement zu wickeln. Siehe https://msdn.microsoft.com/en-us/library/system.windows.forms.integration.elementhost(v=vs.110).aspx.

private void lblReactiveMaintenance_Click(object sender, EventArgs e) 
{ 
    OutlookAddIn.Controls.RForm = new OutlookAddIn.Controls.RForm(); 
    reactiveMaintForm.Name = "rForm"; 
    elementHost2.Child = reactiveMaintForm; 
} 
+0

Ja Ich habe versucht, Element-Host zu verwenden, aber ich bin mir nicht sicher, ob ich den gehosteten Inhalt innerhalb des Designers konfigurieren muss oder ob ich das Element-Host-Steuerelement einfügen und es pragmatisch konfigurieren kann. Ich habe versucht, die URL in den obigen Kommentaren erwähnt, aber der Artikel scheint gelöscht worden zu sein. Haben Sie ein Beispiel oder eine URL, um den gehosteten Inhalt eines Elementhosts programmatisch zu konfigurieren? – mwilson

+0

Fiedeln Sie mit diesem etwas mehr. Das funktioniert gut. – mwilson

Verwandte Themen