Winform直接与Wpf交互

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 的交互逻辑/// </summary>public 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);

完整如下图:

加上后,再次运行,这样一切都正常了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/85432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(4)推理/Inferring

推理/Inferring 推理是指模型将文本作为输入并执行某种分析的任务。这可以是提取标签、提取名称、理解文本的情感等任务。 例如&#xff0c;如果您想从一段文本中提取积极或消极的情感&#xff0c;在传统的机器学习工作流程中&#xff0c;您需要收集标签数据集、训练模型、确定…

关于表单快速开发低代码技术平台的内容介绍

运用什么样的表单快速开发软件平台可以实现高效率创收&#xff1f;随着科技的进步和飞速发展&#xff0c;专业的低代码技术平台已经走入了很多企业的办公职场中&#xff0c;它们灵活、轻量级、优质、高效、易维护等优势特点&#xff0c;可以高效助力广大企业提质增效&#xff0…

位移贴图的实现原理

在以前的文章中介绍过GLTF编辑器 &#xff0c; 编辑器可以对模型的各种材质纹理进行编辑修改&#xff0c;但是有一些新手用户可能对这些材质纹理不太了解&#xff0c;所以我收集了一些资料对这些材质纹理做一下详细的介绍&#xff0c;今天这篇文章主要是介绍位移贴图。 1、什么…

stm32之智能垃圾桶实战

之前用过51做过一个垃圾桶的小项目&#xff0c;这里用32重新搞了一下。视频的效果和之前一样&#xff0c;可参考这个垃圾桶效果 。 一、项目描述&#xff08;同51&#xff09; 项目主要是模拟不用手动打开垃圾桶盖&#xff0c;而进行自动操作。自动打开的条件如下&#xff1a…

【二叉树魔法:链式结构与递归的纠缠】

本章重点 二叉树的链式存储二叉树链式结构的实现二叉树的遍历二叉树的节点个数以及高度二叉树的创建和销毁二叉树的优先遍历和广度优先遍历二叉树基础oj练习 1.二叉树的链式存储 二叉树的链式存储结构是指&#xff0c;用链表来表示一棵二叉树&#xff0c;即用链来指示元素的逻辑…

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(3)摘要

摘要/ Summarizing 如何使用大模型来概括文本 环境准备 和&#xff08;①指南&#xff09;一样需要搭建一个环境 导入OpenAI、加载API密钥以及这个getCompletion辅助函数 import openai import osfrom dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv(…

点云从入门到精通技术详解100篇-单期点云的高斯曲率定位桥梁潜在损伤技术研究

目录 前言 国内外研究现状 三维激光扫描对桥梁损伤检测的研究现状 基于点云高斯曲率损伤检测的研究现状 柱体偏差检测技术研究现状 存在的问题 法向量约束高斯曲率的 TLS 桥面潜在损伤区域探测 2.1 高斯曲率探伤的基本理论 2.2 点云拓扑关系建立的方法比较 2.2.1 KD-…

OpenCV项目开发实战--进行高动态范围 (HDR) 成像--附C++与Python的实现源码

在本教程中,我们将学习如何使用以不同曝光设置拍摄的多张图像创建高动态范围 (HDR) 图像。本文最后将共享 C++ 和 Python 代码供读者下载。 什么是高动态范围 (HDR) 成像? 大多数数码相机和显示器都以 24 位矩阵的形式捕获或显示彩色图像。每个颜色通道有 8 位,因此每个通…

社区分享|MeterSphere变身“啄木鸟”,助力云帐房落地接口自动化测试

云帐房网络科技有限公司&#xff08;以下简称为“云帐房”&#xff09;成立于2015年3月&#xff0c;以“成为最值得信赖的税务智能公司”为愿景&#xff0c;运用人工智能、大数据等互联网技术&#xff0c;结合深厚的财税行业服务经验&#xff0c;为代账公司和中大型企业提供智能…

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 问题分析、数学模型及代码实现

【2023年中国研究生数学建模竞赛华为杯】E题 出血性脑卒中临床智能诊疗建模 1 题目 1.1 背景介绍 出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血&#xff0c;占全部脑卒中发病率的10-15%。其病因复杂&#xff0c;通常因脑动脉瘤破裂、脑动脉异常等因素&#xff0c;导致…

力扣450 补9.15

450.删除二叉搜索树中的节点 可以做&#xff0c;就是去分类讨论&#xff0c;一开始以为有重复节点&#xff0c;感觉挺麻烦的&#xff0c;不过没有重复结点&#xff0c;感觉好做一点了&#xff0c;不过写结点指针赋值的时候把值赋反了&#xff0c;搞得一直报错&#xff0c;还是指…

Spring的RestTemplate、RPC和HTTP

https://blog.csdn.net/weixin_35674711/article/details/96112328 1 . 目标 理解RPC和HTTP的区别 能使用RestTemplate发送请求 2. 讲解 1 . RPC和HTTP 常见远程调用方式&#xff1a; RPC:(Remote Produce Call)远程过程调用 1.基于Socket 2.自定义数据格式 3.速度快&am…

黑马JVM总结(十九)

&#xff08;1&#xff09;GC调优1 通过官网查看查看JVM的参数&#xff1a; 可以使用java命令查看当前环境下的虚拟机参数&#xff1a; 学会使用一些工具如前面学的jmap &#xff0c;jconsole等等工具 &#xff08;2&#xff09;GC调优2 垃圾回收调优只是众多调优中的一个方…

读高性能MySQL(第4版)笔记14_备份与恢复(中)

1. 在线备份 2. 离线备份 2.1. 关闭MySQL做备份是最简单、最安全的 2.2. 所有获取一致性副本的方法中最好的 2.3. 损坏或不一致的风险最小 2.4. 根本不用关心InnoDB缓冲池中的脏页或其他缓存 2.5. 不需要担心数据在尝试备份的过程中被修改 2.5.1. 服务器不对应用提供访问…

vuex的安装和使用

1、安装 注意应安装和Vue对应的版本。 vue2安装命令&#xff1a;npm i vuex3 vue3安装命令&#xff1a;npm i vuex4 2、创建vuex文件 store.js import Vue from vue import Vuex from vuexVue.use(Vuex)const state {count: 0 } const mutations {PLUSE(status, val){state.…

【动态规划刷题 17】回文子串 最长回文子串

647. 回文子串 链接: 647. 回文子串 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c;即使是由…

Could not resolve dependencies for project

一 情况 拉了份代码&#xff0c;打包时, 出现了Could not resolve dependencies for project...... 二 解决 maven打完包运行&#xff0c;测试结果和本地不一致_犯错-总结-前进的博客-CSDN博客

Debian搭建smb服务器

1、确保Debian系统已经安装并处于最新状态。您可以使用以下命令更新系统&#xff1a; sudo apt update sudo apt upgrade2、安装Samba软件包。执行以下命令来安装Samba&#xff1a; sudo apt install samba3、编辑Samba配置文件。打开/etc/samba/smb.conf文件&#xff1a; s…

zookeeper + kafka

Zookeeper 概述 Zookeeper是一个开源的分布式服务管理框架。存储业务服务节点元数据及状态信息&#xff0c;并负责通知再 ZooKeeper 上注册的服务几点状态给客户端 Zookeeper 工作机制 Zookeeper从设计模式角度来理解: 是一个基于观察者模式设计的分布式服务管理框架&…

Learn Prompt-GPT-4:能力

GPT-4能力大赏​ 常识知识推理​ 一个猎人向南走了一英里&#xff0c;向东走了一英里&#xff0c;向北走了一英里&#xff0c;最后回到了起点。他看到了一只熊&#xff0c;于是开枪打了它。这只熊是什么颜色的&#xff1f; 答案是白色&#xff0c;因为这种情况只可能发生在北…