2016-04-21 1 views
1

Я делаю Outlook добавлением, когда пользователь запускает добавление, появляется форма окна. в этой форме окна я буду динамически добавлять пользовательские элементы управления на основе ввода пользователя.Добавление пользовательского элемента управления (WPF) в панель в форме Windows C#

Проблема, с которой я сталкиваюсь, заключается в добавлении управления программно. Все работает отлично, если я просто добавляю стандарт TextBox, но когда я добавляю элемент управления пользователя, я получаю следующее исключение;

Лучший перегружен матч метод 'System.Windows.Forms.Control.ControlCollection.Add (System.Windows.Forms.Control)' имеет некоторые недопустимые аргументы

не может конвертировать из «OutlookAddIn .Controls.RForm»до„“System.Windows.Forms.Control

Я попытался заливка контроля на UserControl, но возникли новые исключения.

Главная форма:

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); 
     } 
    } 
} 

управления пользователя:

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

Возможный дубликат [Put управления WPF в Windows Forms Form] (http://stackoverflow.com/questions/5053501/put-wpf-control-into-a-windows-forms-form) –

ответ

2

Вы должны быть в состоянии использовать контроль ElementHost обернуть контроль WPF. См. 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

Да , Я попытался использовать элементный узел, но я не уверен, что мне нужно настроить размещенный контент внутри конструктора или я могу добавить элемент управления элементом и просто настроить его прагматично. Я попробовал URL, упомянутый в комментариях выше, но статья, похоже, была удалена. У вас есть пример или URL-адрес о том, как программно настроить размещенное содержимое узла элемента. – mwilson

+0

Спрятано с этим немного больше. Это прекрасно работает. – mwilson

Смежные вопросы