在Windows窗体中向面板添加用户控件(WPF)c#

时间:2016-04-21 23:45:09

标签: c# wpf winforms outlook

我正在制作一个Outlook添加,当用户启动添加时,会出现一个Windows窗体。在这个窗体中,我将根据用户输入动态添加用户控件。

我遇到的问题是以编程方式添加控件。如果我只添加标准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();
        }
    }
}

1 个答案:

答案 0 :(得分: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;
}