投票网站制作,都匀住房与城乡建设部网站,网络营销课程设置,做企业网站那家好Winform项目中#xff0c;可以直接使用wpf中的自定义控件和窗体 测试环境#xff1a;
vistual studio 2017
window 10 一 winform直接使用wpf的自定义控件
步骤如下#xff1a;
1 新建winfrom项目#xff0c;名为WinFormDemo#xff0c;默认有一个名为Form1的窗体…Winform项目中可以直接使用wpf中的自定义控件和窗体 测试环境
vistual studio 2017
window 10 一 winform直接使用wpf的自定义控件
步骤如下
1 新建winfrom项目名为WinFormDemo默认有一个名为Form1的窗体先不要动它
2 想要在winform项目中直接使用wpf的东西需要添加引用
PresentationCore.dll PresentationFramework.dll WindowsBase.dll
如果不记得要添加那个dll有个比较快的方式就是在为项目添加新建项的时候选择用户控件(WPF)模板点击确定后会自动帮你添加引用这样就不用自己手工引用了如下图 3 添加Wpf自定义控件UserControl1.xaml在步骤2已经添加了并编辑如下
UserControl1.xaml的前台代码如下 对应的后台代码UserControl1.xaml.cs如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace WinFormDemo
{/// summary/// UserControl1.xaml 的交互逻辑/// /summarypublic partial class UserControl1 : UserControl{public UserControl1(){InitializeComponent();}private void BtnEnter_Click(object sender, RoutedEventArgs e){MessageBox.Show(确定1按钮按下);}}
}4 生成本项目(一定要先生成项目)然后打开winform默认新建Form1的设计器在右边的工具箱可以看到控件UserControl1了然后把它拽进Form1窗体里面如下图 5 再生成项目运行后点击确定1按钮运行结果如下 不过通过观察后发现运行的程序有很明显的卡顿 二 winform直接使用wpf的窗体
winfrom通过新建项的方式不能直接新建wpf窗体但我们可以使用新建的wpf的用户控件然后略做修改就行当然你也可以添加已有的wpf窗体这样就可以省略2.1步骤的操作。
2.1 在前文的基础上继续操作(当然咯这三个PresentationCore.dll PresentationFramework.dll WindowsBase.dll引用是少不了的)新建项模板选择用户控件(WPF),名称为WindowTest 修改WindowTest.xaml
把根标签UserControl修改为Window并按照如下图在Grid标签中新增内容如下 按照如下要求修改后台代码WindowTest.xaml.cs 2.2 在winfrom的Button按钮事件中触发弹出wpf窗体在Form1窗体中拽入winform的Button控件按钮名称为弹出wpf窗体控件名称为btnWpf事件名称为btnWpf_Click如下图 以模态的方式弹出wpf窗体(即ShowDiaglog)如下图 运行结果如下图 以非模态的方式(即Show的方式)弹出wpf窗体 发现Wpf窗体中的TextBox在英文输入法的情况下输入不了字母和数字
查阅资料后发现在Show前需要添加这一句代码
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(windowTest);
完整如下图 加上后再次运行这样一切都正常了。