我正在制作一个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();
}
}
}
答案 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;
}