Send Custom Event to Host (Windows Form) from a WPF Control -Part 2

微信公众号个性签名(二次裂变) 微信公众号源码,用户回复姓名自动发送艺术签名,用户分享后恢复分享截图,自动发送第二种字体签名,实现二次裂变。 立即下载

Send Custom event to Host (Windows Form) from a WPF Control - Part 2

 

In the previous articles we have seen how to host a WPF control into the Windows Form and send the standard events to Windows form from WPF control. In this article we would see how custom event from WPF control could be passed to hosting windows form.

 

There are 3 steps involve to do achieve this.

 

Step 1: Create the custom Event and its argument:

To create any custom argument for the event it has to be derived from EventArgs. These arguments have to be available to the source and receivers so it has to be declared in the library project.

 

  • Create the Class Library Project and name it CustomEvents.
  • Rename the class1 file to Controller
  • Add the CustomArgs class and derive it from EventArgs as shown here.

    public class CustomArgs : EventArgs
    {
        private string _userName;
        public CustomArgs(string userName)
        {
            this._userName = userName;
        }

        // This is a straightforward implementation for
        // declaring a public read only field
        public string UserName
        {
            get
            {
                return this._userName;
            }
        }
 }


  • Add the Custom delegate and its Event
///<summary>

/// CustomMsgEventHandler Delegate type defining the prototype of the callback method that receivers must implement.

///</summary>

public delegate void CustomMsgEventHandler(

            Object sender, CustomArgs args);

 

///<summary>

/// Event EventCustomMsg, which the subscriber would listen and source would raise this event

///</summary>

public event CustomMsgEventHandler EventCustomMsg;


  • Add the Public method used by the source who would raise the event
public void NewCustomMsg(Object sender, CustomArgs e)
        {
            // Has any objects registered interest with our event?
            if (EventCustomMsg != null)
            {
                // Yes, notify all the objects
                EventCustomMsg(sender, e);
            }
     }


 

Step2. Create the WPF control project to raise the custom event to windows Form Application:

  • Create WpfUserControlLib project in Visual Studio 2008 described in the use WPF control in Windows Form.
  • Add the reference of the CustomEvents project created in the first step.
  • Create the class member of the Controller class

private WPFCustomEvents.Controller _controller;


  • Add the constructor and initialize the controller class object.  Same Controller object has to shared by all source and target classes. Its better create the singleton object of Controller class.
public UserControl1(WPFCustomEvents.Controller controller)
{
     InitializeComponent();
     _controller = controller;
}

 
  • Add the Event Handler for the btnOk and btnCancl button in the WPF Library

private void btnOK_Click(object sender, RoutedEventArgs e)
{

}

private void btnCancel_Click(object sender, RoutedEventArgs e)
{

}

 
  • Add the public property in the UserControl1.xaml.cs file to share the value of the textbox with the host
public string UserName
{
       get { return txtName.Text; }
       set { txtName.Text = value; }
}

 
  • Declare the Cancel Button, which can be subscribed by Windows Form. For the Ok button events already declared in the controller class

 

public event EventHandler CancelClick;


  • Now add the code to the event handler so that we can raise the event to host also.

 In the OK button event create the custom argument and fills all the members and raise the custom event.

private void btnOK_Click(object sender, RoutedEventArgs e)
{
WPFCustomEvents.Controller.CustomArgs eCustomArg = new WPFCustomEvents.Controller.CustomArgs(txtName.Text);
_controller.NewCustomMsg(this, eCustomArg);
}

private void btnCancel_Click(object sender, RoutedEventArgs e)
{
            if (CancelClick != null)
                CancelClick(this, e);
}


 

Step 3: Handle the WPF Control’s Custom Event in Windows Form:

  • Create WinFormWPFHostApp Windows Form project in Visual Studio 2008 as described in the article to use the WPF control in windows Form.
  • Add the reference of the WpfUserControlLib and CustomEvents projects.
  • In the constructor create the object of the Controller class and pass it to WpfUserControlLib’s WPF control.
public Form1()
{
   InitializeComponent();
   _controller = new WPFCustomEvents.Controller();
  elementHost1.Dock = DockStyle.Fill;
   _WPFUserControl = new WpfUserControlLib.UserControl1(_controller);
   _controller.EventCustomMsg += new WPFCustomEvents.Controller.CustomMsgEventHandler(OnCustomMsg);
   _WPFUserControl.CancelClick += new EventHandler(OnCancelHandler);
   elementHost1.Child = _WPFUserControl;
}


  • Add Handler to OKClick and Cancel click Event just after creating the instance of the user control.
 _WPFUserControl.OkClick += new EventHandler(OnOkHandler);
  _WPFUserControl.CancelClick += new EventHandler(OnCancelHandler);


  • Write code in the handler method. If you see in OnCustomMsg I am getting all the information along with Custom event and argument.

 

protected void OnCustomMsg(object sender, WPFCustomEvents.Controller.CustomArgs e)
{
MessageBox.Show("Hello: " + e.UserName + " you clicked Ok Button");
}

protected void OnCancelHandler(object sender, EventArgs e)
{
            MessageBox.Show("you clicked Cancel Button");
}


 

Compile and Run the Windows Application you would see the WPF control is hosted in the Windows Control, Enter your name in the Text box and click OK and Cancel Button to see you are getting back the event from WPF control including the custom event and custom arument on ok button. 

 

Summary: We can use the power of the WPF Control’s visual elements into the Windows Form application by hosting very easily. You can share the data and send the event (both custom and existing) to host from the WPF control.


转自【http://www.a2zdotnet.com/View.aspx?Id=94#.Ub8hTJyvy3I】

IEC 61851-24:2023 电动汽车导电充电系统 - 第24部分:直流电动汽车供电设备与电动汽车之间的数字通信,用于控制直流充电 - 完整英文电子版(110页) IEC 61851-24:2023 与 IEC 61851-23 共同适用于直流电动车供电设备与电动道路车辆(EV)之间的数字通信,用于控制导电直流电力传输,额定电源电压最高可达1000伏交流电或最高1500伏直流电,额定输出电压最高可达1500伏直流电。 立即下载

相关推荐

Linux下的段错误(Segmentation fault)产生的原因及调试方法(经典)

Linux下的段错误(Segmentation fault)产生的原因及调试方法(经典)

微擎客服消息发送的函数

微擎客服消息发送的函数 // $this->sendCustomNotices($openid, 'content text', 公众号ID) $custom = array( 'msgtype' => 'text', 'text' => array('content' => urlencode('欢迎您再次订购!')), 'touse...

GetcharZp的博客 754

北京大学数字普惠金融指数2011年-2023年(PKU-DFIIC)

该数据集可能涵盖以下几个方面:一是金融服务的可达性,涉及金融服务在不同人群和不同地区的普及程度,尤其是对中小企业、农村地区和低收入群体的覆盖;二是数字金融服务的使用情况,包括电子支付、网络贷款、互联网保险、数字资产管理等,反映人们在日常生活中对数字金融服务的依赖与使用;三是普惠金融的普及程度,可能包含金融服务覆盖的人群比例、地理范围以及服务种类和使用频率;四是创新技术的应用情况,涵盖大数据、区块链、云计算、人工智能等新技术在金融服务中的应用程度及其影响;五是监管环境与政策导向,反映国家和地方政策对数字普惠金融发展的支持与监管;六是金融服务的满意度与问题,收集用户对数字金融服务的满意度评价以及服务过程中遇到的问题和挑战。 该数据集对研究机构、政策制定者和金融科技公司均具有重要价值。研究机构可借助这些数据了解数字普惠金融的发展趋势和模式,识别影响普惠金融发展的关键因素;政策制定者可依据数据内容制定针对性政策,推动金融服务均衡发展;金融科技公司则可通过分析数据优化产品设计,满足不同用户群体的需求。 此外,感兴趣的读者可通过文中提供的链接查阅详细介绍和样例数据,进一步了解数据集的构成与应用方式。该链接指向一篇博客文章,文章详细介绍了数据集的结构和内容,并可能提供样例数据供参考,帮助读者更好地理解和使用这些数据。数据集标签为“数据集”,说明它是一个经过整理和加工的原始数据集合,便于学者和研究人员在不涉及原始数据收集过程的情况下直接使用这些数据开展研究和分析,有助于缩短研究时间、提升研究效率并促进知识共享。

网页关注微信服务号登录

本文基于微信公众号开发平台文档整理出来的 一、公众号(服务号)基本信息获取 1、创建微信公众平台开发账号 https://mp.weixin.qq.com/ 2、配置开发信息【这些设置都要开通认证(非个人)】 3、获取测试订阅号 我们个人的订阅号没有办法开通微信认证很多功能不能使用 , 可以获取测试号进行开发测试 https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Requesting_an_A

Dragon1993vsLong的博客 3532

DataGear是一款开源免费的数据可视化分析平台,自由制作任何数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源

DataGear是一款开源免费的数据可视化分析平台,自由制作任何数据看板,支持接入SQL、CSV、Excel、HTTP接口、JSON等多种数据源。系统主要功能包括:数据源管理、SQL工作台、数据导入/导出、项目管理、数据集管理、图表管理、看板管理、用户管理、角色管理、数据源驱动管理、图表插件管理等。

【带状电容器计算用于电容式触摸传感器应用】半数值模型的电容式触摸传感器集成于金属基材涂层中研究(Matlab代码实现)

内容概要:本文针对电容式触摸传感器在金属基材上应用时易受干扰的问题,提出一种基于半数值模型的仿真分析方法,用于精确计算带状电容器在金属背景下的电容变化。研究通过构建合理的物理模型,结合电磁场理论与数值计算技术,在Matlab平台上实现代码仿真,有效克服金属环境对传感器性能的负面影响,提升其在复杂材料表面工作的稳定性和灵敏度,具有良好的工程应用前景。该方法不仅适用于基础研究,也可为实际产品中抗干扰触摸传感器的设计提供理论依据和技术支撑。; 适合人群:具备电磁场与微波技术基础知识及Matlab编程能力,从事传感器设计、人机交互设备开发、嵌入式系统研发等相关领域的高校研究生、科研人员和工程技术人员。; 使用场景及目标:①开展电容式触摸传感器在金属基材上的集成与优化设计;②掌握半数值建模与仿真方法在电磁传感系统中的应用;③为工业环境下高抗扰触摸器件的研发提供仿真验证手段与设计指导。; 阅读建议:此资源强调物理建模与数值仿真的紧密结合,建议读者结合电磁学原理深入理解边界条件设置、介质分布建模与电场求解过程,并动手运行Matlab代码,调试参数以观察电容响应特性,从而全面提升对传感器工作机制与仿真分析能力的掌握。

C# 一步一步写事件

事件一步一步来写 定义事件参数 public class CustomArgs:EventArgs { ...... } 定义委托 public delegate void CustomEventHandler(object sender,CustomArgs e) 声明事件 public class Custom { public event CustomEventHandler

快乐小斗车 324

【顶级EI复现】基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法(Simulink仿真实现)

内容概要:本文提出了一种基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法,旨在实现高效、高可靠性的电力转换。该方法通过建立精确的电路数学模型,结合KKT最优性条件进行分段解析优化,有效协调零电压/零电流软开关实现条件与功率器件电压电流应力之间的矛盾,在确保宽范围软开关的前提下显著降低器件的电气应力,从而提升系统效率与寿命。文中详细阐述了控制策略的理论推导过程,并在Simulink平台上构建了完整的闭环仿真模型,验证了该方法在动态响应速度、转换效率优化及器件应力抑制等方面的优异性能,是对高水平EI期刊研究成果的高质量复现; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员,以及从事DC-DC变换器控制算法开发的工程师;适用于具备扎实电路拓扑分析能力与现代控制理论基础的专业技术人员; 使用场景及目标:①深入理解双有源桥(DAB)变换器的工作机理与关键控制挑战;②掌握将非线性优化问题转化为KKT条件求解的方法及其在电力电子系统中的实际应用;③学习如何通过分段解析策略实现多目标(软开关与低应力)协同优化控制;④复现并拓展EI级论文中的先进控制算法,支撑科研创新与工程实践; 阅读建议:建议读者结合提供的Simulink仿真模型,逐步跟进理论推导与控制逻辑实现过程,重点关注KKT条件的引入方式、边界约束处理及闭环控制器设计细节,同时可尝试将该优化思想迁移至其他隔离型DC-DC变换器拓扑中进行对比验证,以深化对先进优化控制策略的理解与应用能力。

微擎之php获取表单提交的数据6,第六课微擎高级操作

- token获取~~~$token = WeAccount::token();~~~- - 加载类~~~$weixin = weixinpay::create('wechat');$userinfo = $weixin->getOauthInfo();~~~~~~load()->model('mc');$wechat = $_W['account']['setting']['paym...

weixin_32558831的博客 427

无刷直流电机(BLDCM)转速电流双闭环控制、三相桥式星型全控电机研究(Simulink仿真实现)

内容概要:本文围绕无刷直流电机(BLDCM)的转速电流双闭环控制系统展开深入研究,重点基于Matlab/Simulink平台构建三相桥式星型全控电路的高精度仿真模型,实现对电机运行状态的精确控制。研究系统性地对比了传统PID控制与模糊PID控制策略在动态响应速度、抗干扰能力、稳态精度及鲁棒性等方面的性能差异,深入剖析电流环与转速环的协同作用机制。同时,文章进一步引入无位置传感器控制技术与滑模观测器(SMO),有效解决了机械传感器带来的成本与可靠性问题,提升了系统的集成度与工程实用性。所提供的多个仿真模型(含模糊神经网络PID等高级控制策略)为控制算法的验证与优化提供了可复现的技术路径,仿真结果可为电机驱动系统的工业设计与科研创新提供坚实的理论依据和技术支撑。; 适合人群:自动化、电气工程、电力电子与电机控制等相关专业的本科生、研究生,以及从事电机驱动系统研发、新能源汽车、工业自动化等领域工作的工程师和技术人员。; 使用场景及目标:①掌握无刷直流电机双闭环控制系统的建模、仿真与调试全流程;②深入理解并实践传统PID与模糊PID控制器的设计原理与参数整定方法;③探究无位置传感器控制与滑模观测器等先进估测技术的实现机理;④为毕业设计、科研课题、课程项目或工业级电机控制器开发提供可直接借鉴的仿真基础与解决方案。; 阅读建议:建议读者结合Matlab/Simulink环境进行动手实践,按照文档指引逐步搭建模型,重点观察不同控制策略下的系统响应曲线,深入分析控制参数变化对性能的影响,并鼓励在此基础上拓展研究如负载突变、参数摄动等复杂工况下的控制策略优化。

【顶级EI复现】新扩展移相角下的双有源桥DC-DC 变换器优化控制策略(Simulink仿真实现)

内容概要:本文聚焦于“新扩展移相角下的双有源桥DC-DC变换器优化控制策略”的高水平EI论文复现与深化研究,系统性地实现了基于扩展移相调制(EPS)的DAB变换器控制方案,重点涵盖软开关技术的实现、器件最小应力优化及双闭环控制系统的设计。通过Simulink平台构建完整的仿真模型,验证了该控制策略在提升能量转换效率、降低功率器件电压电流应力、改善动态响应性能等方面的优越性,体现了先进控制理论与电力电子系统深度融合的技术特征。; 适合人群:电力电子、电气工程及其自动化、新能源系统控制等方向的研究生、科研人员及从事DC-DC变换器研发的工程技术人员,尤其适合具备电路拓扑分析能力与控制系统仿真基础的专业人士。; 使用场景及目标:①深入掌握双有源桥变换器的工作机理及其在电动汽车、微电网、可再生能源并网等场景中的关键技术应用;②理解并实现扩展移相调制(EPS)与软开关、最小应力优化之间的协同控制机制;③学习高水平EI期刊论文的建模规范、算法设计逻辑与仿真验证方法,提升科研实践能力;④为后续开展多模块并联、数字化控制或新型调制策略创新提供技术储备。; 阅读建议:此资源以Simulink仿真实现为核心载体,建议读者结合文档逐步搭建模型,重点关注调制信号生成、闭环控制器参数整定、软开关边界条件分析及系统性能对比,鼓励在复现基础上进行拓展性研究,如引入数字延迟补偿、优化启动策略或多模式切换逻辑,以深化对DAB系统动态特性的理解。

【影像组学pyradiomics教程】(四) pyradiomics模块--Feature Extractor(特征抽取器)

本系列博客后续将更新于个人微信公众号,欢迎关注。     4.1 Feature Extractor class radiomics.featureextractor.RadiomicsFeaturesExtractor(*args, **kwargs) 特征抽取器是一个封装的类,用于计算影像组学特征。大量设置可用于个性化特征抽取,包括:需要抽取的特征类别及其对应特征;需要使用的...

JianJuly的博客 1万+

三相PWM整流器双闭环控制仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink仿真实现的三相PWM整流器双闭环控制仿真模型,重点阐述了电流内环与电压外环协同控制的原理与实现方法。通过构建完整的控制系统模型,深入解析PWM整流器的工作机制、动态响应特性及系统稳定性控制策略,帮助读者掌握电力电子系统中典型控制结构的设计思路。文章不仅提供可操作的仿真建模流程,还结合科研实际需求,配套丰富的学习资源链接,涵盖智能优化、机器学习、图像处理、路径规划、通信与信号处理、电力系统管理等多个技术领域的仿真案例,具有较强的实践指导意义。; 适合人群:适用于电气工程、自动化、电力电子及相关专业的本科生、研究生、科研人员,以及具备一定MATLAB/Simulink基础并从事电力电子系统仿真与控制研究的专业技术人员。; 使用场景及目标:①深入理解三相PWM整流器的工作原理及双闭环控制策略的设计与调试;②独立搭建并优化电力电子系统的Simulink仿真模型,服务于课程设计、毕业设计或科研项目;③借助配套资源拓展至多学科交叉领域的仿真研究与算法应用。; 阅读建议:建议按照文档结构结合网盘提供的仿真文件逐步实践,重点关注控制器参数整定、系统动态性能分析与仿真模块搭建,并配合相关理论学习以提升对电力电子系统控制本质的理解。

argparse - 命令行选项与参数解析(转)

argparse - 命令行选项与参数解析(译)Mar 30, 2013 原文:argparse – Command line option and argument parsing 译者:youngsterxyf argparse模块作为optparse的一个替代被添加到Python2.7。argparse的实现支持一些不易于添加到optparse以及要求向后不兼容API变化的特性,因此以...

weixin_33724046的博客 617

OpenSceneGraph编译、安装、开发环境

详细描述WIndows 10下使用Visual Studio 2019编译OpenSceneGraph 3.6.5的操作流程

国产CAx(CAD/CAE/CAM)软件研发 8771

从编解码芯片看Tesla T4的隐藏实力:双NVDEC如何实现70路1080P解码?

本文深入剖析了英伟达Tesla T4显卡的隐藏实力,重点解读其独特的双NVDEC硬件解码器设计如何突破性能瓶颈。通过分析Turing架构、对比HEVC/H.264解码差异,并结合驱动与SDK优化,揭示了实现高达70路1080P视频流并发解码的原理与实战配置,为云游戏、直播转码等高并发场景提供高效解决方案。

weixin_29209801的博客 484

【WPF】创建基于模板的WPF控件

WPF可以创建两种控件,它们的名字也很容易让人混淆:用户控件(User Control)和定制控件(Customer Control),之所以如此命名,是因为用户控件更面向控件的“使用者”,以方面他们利用现成的控件组合成新的控件,而客户控件,更便于定制化(Customization),方便创建有别于现有控件的定制控件。 定制控件提供了行为和表现完全分离的开发模式,具有很高的灵活性,当然,也更...

raylinn的博客 335

从单机到多机:用llama.cpp的RPC模式榨干你闲置的GPU(附性能调优参数)

本文详细介绍了如何利用llama.cpp的RPC模式实现多机部署,将闲置GPU资源整合为高效推理集群。通过实战案例展示了性能调优参数设置、端口分配策略以及常见问题排查技巧,帮助中小团队最大化利用异构GPU设备,提升文本摘要等任务的推理效率。

weixin_27240351的博客 588

基于微擎的消息回复

说明:微信公众号允许开发者对与公众号在24小时内交互过的粉丝主动发送消息,称之为客服消息。只有认证服务号和认证订阅号才能调用接口。 客服消息结构,消息分为文本,图片,语音,视频,音乐,图文,卡券,这里主要说的是文本消息(所有的客服消息都是通过post请求来传送数据)。 首先是在单个公众号下,代码如下: $openid=$_POST['openid'];//被回复用户的openid

qq_39821282的博客 4943

Unity游戏开发必备:HybridCLR热更新实战教程(含iOS/Android适配指南)

本文详细介绍了HybridCLR在Unity游戏开发中的热更新实战教程,包括iOS/Android平台适配指南。通过环境配置、项目结构规划、热更新工作流实现等步骤,帮助开发者高效掌握C#热更新技术,解决移动游戏快速迭代的痛点问题。

weixin_29011395的博客 441

VScode+MPLAB AI助手:Microchip MCU开发全流程实战解析

本文详细解析了如何使用VScode搭配MPLAB AI助手进行Microchip MCU开发的完整流程。从环境配置、工程创建到代码生成与调试,全面介绍了AI助手在提升开发效率、优化代码和故障排除方面的实际应用,为嵌入式开发者提供了一套高效的开发解决方案。

hh234的博客 1130
上一篇: Send event to Host (Windows Form) from a WPF Control -Part 1
下一篇: MySQL常用函数
系统信息
系统信息 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄23年 2404粉丝 565原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值