原文:WPF 委托 事件 B窗体调用A窗体方法

具体实现 A窗体 中加载B窗体  B窗体触发A窗体里的方法

当点击B窗体确定Button事件   给A窗体俩个TextBox赋值 并关闭B窗体

B窗体

1)定义参数类

2)定义委托 定义委托事件

3) 定义触发事件方法

4) 触发事件方法

A窗体

1)实例化B窗体对象

2)注册定义的事件

3) 实现事件

代码

B窗体

1)定义参数类 也就是 我传过去了俩个字段(这俩个字段 让我封装成的类)


  1. //对象
  2. public class ItemEventArges:EventArgs
  3. {
  4. public ItemListControlViewModel value;
  5. public ItemEventArges(ItemListControlViewModel v)
  6. {
  7. value = v;
  8. }
  9. }

2)3)定义委托与委托事件


  1. public delegate void ItemEventHandler(object sender,ItemEventArges arge);
  2. public delegate void ItemCloseEventHandler(object sender);

4) 定义触发事件方法 用来方便调用


  1. /// <summary>
  2. /// 触发事件
  3. /// </summary>
  4. /// <param name="e"></param>
  5. protected virtual void OnItemEvent(ItemEventArges e)
  6. {
  7. if (ItemEvent != null)
  8. {
  9. ItemEvent(this, e);
  10. }
  11. }

5)点击选中按钮时 触发  事件方法 传参


  1. private void Button_Click(object sender, RoutedEventArgs e)
  2. {
  3. ItemListControlViewModel model = Listview.SelectedItem as ItemListControlViewModel;
  4. OnItemEvent(new ItemEventArges(model));
  5. }

A窗体

1)实例化B窗体 注册事件  实现事件内容


  1. //实例化B窗体
  2. ItemListControl us = new ItemListControl();
  3. //注册事件
  4. us.ItemEvent += us_ItemEvent;
  5. //实现内容方法
  6. void us_ItemEvent(object sender, ItemEventArges arge)
  7. {
  8. // 赋值
  9. TxTItem.Text = arge.value.ItemName;
  10. TxtID.Text = arge.value.ItemID;
  11. window.Close();
  12. }

以上都是测试数据

WPF 委托 事件 B窗体调用A窗体方法的更多相关文章

  1. wpf 子窗体调用主窗体中函数的实现

    子窗体(Win_Set): MainWindow m;                m = (MainWindow)this.Owner;                m.showText(&qu ...

  2. Observer设计模式中-委托事件-应用在消息在窗体上显示

    Observer设计模式:监视者模式.在类中的方法中处理的结果或者消息通过事件委托 的方式发送给主窗体. 因为在其它类中直接访问主窗体类,显示内容是不能直接调用控件赋值的,当然也有别的类似查阅控件名, ...

  3. 子窗体与父窗体调用对方js方法

    有时候为了减少一个页面内的代码量,会将部分内容放到子窗体中,如后台管理中用iframe来进行管理 <div> <iframe id="dviframe" src= ...

  4. winform 子窗体调用父窗体中的方法

    在父窗体里定义委托 public delegate void inis(string str); 在父窗体中定义要调用的方法 public void inigs(string gs) { textBo ...

  5. C# 在子窗体调用父窗体的值(转)

    1.在父窗体中 public delegate void SetVisiableHandler();//定义委托类型 注意此委托定义在namespace下一级,在form类外 private void ...

  6. WinForm------SplitContainerControl的窗体调用控件方法

    Frm_Books窗体(窗体里面有个按钮跳转Frm_Book_Select窗体) private void Add_Book_ItemClick(object sender, DevExpress.X ...

  7. C# 、子窗体调用父窗体属性、方法

    namespace Test { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } p ...

  8. 委托事件和jquery中的delegate方法

    利用事件冒泡的特性,给父元素绑定事件,然后判断事件对象,来给父元素的每个子元素添加事件,而不是直接在所有的子元素上绑定事件: <ul> <li></li> < ...

  9. C# 利用委托事件进行窗体间的传值(新手必看)

    引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ...

随机推荐

  1. maven搭建webservice apache cxf实现

    用 web方式发布 webService 服务端.客户端 一.服务器端搭建 1.首先创建 一个web工程(增加Maven依赖) 2.增加Maven依赖包,如下: <project xmlns=& ...

  2. SVN安装简介

    博主最近换个份工作,代码管理用的是SVN,因为之前用的Git管理代码的,SVN没接触过,既然公司中要用,就学习下使用吧.从最基本的安装开始吧. SVN官网:https://tortoisesvn.ne ...

  3. VScode - 10个提高工作效率的快捷键

    复制行 shift + alt + up / down 移动行 alt + up / down 多选 按住alt + 鼠标单击 删除上个单词 ctrl + Backspace 全部保存 ctrl + ...

  4. SQL Server获取索引创建时间&重建时间&重组时间

    之前写过一篇博客"SQL Server中是否可以准确获取最后一次索引重建的时间?",里面主要讲述了三个问题:我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild ...

  5. Creating a Physical Standby from Primary on Version 12c (Doc ID 1570958.1)

    Creating a Physical Standby from Primary on Version 12c (Doc ID 1570958.1) APPLIES TO: Oracle Databa ...

  6. MySQL常用DDL、DML、DCL语言整理

    DDL ----Data Definition Language 数据库定义语言 如 create procedure之类 创建数据库 CREATE DATABASE [IF NOT EXISTS] ...

  7. 编辑器之神vim的一些常用快捷键整理

    yy:复制 光标所在的这一行 4yy:复制 光标所在行开始向下的4行 p:粘贴 dd:剪切(删除) 光标所在的这一行 4dd:剪切(删除) 光标所在行向下的4行 D:从当前的光标开始向后剪切,一直到行 ...

  8. mongodb基本安装

    这次搞搞NOSQL, 但最简单的MONGODB安装,还是要作点配置的. 一,安装网址: https://www.mongodb.com/download-center/community?jmp=na ...

  9. A:linux基础章节导航

    本章的内容主要有: 模板机的安装 常用的小命令 find awk vim sed

  10. Tensorflow常用算数操作

    TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU.一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测.如果检测 ...