在winform编程中,通常使用form1.Show(form2)形式的代码来控制窗体之间的包含关系,这个使用方法如何适应wpf中的变化?
解决方法就是WindowInteropHelper类型,这个类型可以得到一些form和window的公共属性,一般使用方法是WindowInteropHelper _windowHelper=new WindowInteropHelper(this);。
通过上述转换,我们可以通过_windowHelper.Handle来得到窗体的句柄了,通过句柄就可以得到一个form对象了,这样使得wpf窗体包含winform窗体成为了可能,验证代码如下:
public partial class MainWindow : Window
{
Form forma=new Form();
WindowInteropHelper _windowHelper;
public MainWindow()
{
InitializeComponent();
_windowHelper = new WindowInteropHelper(this);
this.Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
forma.Show(Form.FromHandle(_windowHelper.Handle));
}
}