原文: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. How to Create Transportable Tablespaces Where the Source and Destination are ASM-Based (Doc ID 394798.1)

    How to Create Transportable Tablespaces Where the Source and Destination are ASM-Based (Doc ID 39479 ...

  2. [Go] 使用net包作为tcp客户端读取http

    1.tcp的客户端,并且直接读取http协议的全部内容,每次读取4096字节,直到最后一个字节是\n并且读取的长度小于4096 conn, err := net.Dial("tcp" ...

  3. avd manger创建的虚拟机启动不起来,或者启动起来后黑屏

    最近鼓捣安卓虚拟机,整的都差点重装系统,刚开始下载了genymotion_vbox,装完以后要在vbox中导入一个虚拟机,结果我导入完,虚拟机怎么也启动不了,然后各种找办法无果,最后重启电脑发现电脑也 ...

  4. SpringCloud学习笔记(十一、SpringCloud总结)

    SpringCloud Config: 1.动态刷新配置:通过job调用Set<String> keys = contextRefresher.refresh()这段代码即可. 2.如何实 ...

  5. Django信号机制相关解释与示例

    Django 信号# django自带一套信号机制来帮助我们在框架的不同位置之间传递信息.也就是说,当某一事件发生时,信号系统可以允许一个或多个发送者(senders)将通知或信号(signals)发 ...

  6. C++之封装继承和多态

    C++中非常重要的概念,尤其是相对于C语言而言,也是其具有如此高的工程使用性的重要原因. 封装 所谓封装是将某些东西隐藏起来,让外界无法直接使用,而必须通过某些特定的方式才能访问.也即是,将抽象得到的 ...

  7. 一、I/O模型之BIO

    I/O模型之BIO 基本介绍 Java BIO 就是传统的 Java IO 编程,其相关的类和接口再 java.io 包下 BIO(blocking I/O):同步阻塞,服务器实现模式为一个连接一个线 ...

  8. 如何使用1行代码让你的C++程序控制台输出彩色log信息

    本文首发于个人博客https://kezunlin.me/post/a201e11b/,欢迎阅读最新内容! colorwheel for colored print and trace for cpp ...

  9. Linux 磁盘分区、挂载

    一.分区介绍 mbr分区: 1.最多支持四个主分区 2.系统只能安装在主分区上 3.扩展分区要占一个主分区 4.mbr最大只支持2TB,但拥有最好的兼容性 gpt分区: 1.支持无限多个主分区(但操作 ...

  10. 高强度学习训练第十六天总结: Spring框架中的设计模式

    仔细想了想..没必要重复造轮子. 每天复习啥了就直接CTRL CV了 https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/system-de ...