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

原文: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. }

以上都是测试数据

原文地址:https://www.cnblogs.com/lonelyxmas/p/12075417.html

时间: 2024-10-02 18:22:58

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

jquery中ifram子窗体调用父窗体方法、父窗体调用子窗体方法

//调用子窗体中的方法. var childWindow = $("#AddFrame")[0].contentWindow;//获取子窗体的window对象 childWindow.subForm(); //调用父窗体中的方法 window.parent.afterAdd();

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

1.在父窗体中 public delegate void SetVisiableHandler();//定义委托类型 注意此委托定义在namespace下一级,在form类外 private void button1_Click(object sender,EventArgs e)//单击事件,打开子窗体 { Form2 frm = new Form2(new SetVisiableHandler(SetVisiable)); frm.Show(); } private void SetVisi

winfrom 子窗体调用父窗体中的方法

在父窗体里定义委托 public delegate void inis(string str); 在父窗体中定义要调用的方法 public void inigs(string gs) { textBox1.Text = gs; } 在new窗体的时候传递委托  (我这里form4是父窗体 form5是子窗体) inis i = new inis(inigs); Form5 f5 = new Form5(i); f5.Show(); 在新窗体中接收 Form4.inis ii; List<stri

C# 委托事件的异步调用

1 public class Publish 2 { 3 public delegate void PublishEventHandler(object sender,PublishEventArgs e); 4 private event PublishEventHandler publish; 5 private Delegate[] del; 6 public class PublishEventArgs :EventArgs 7 { 8 public string BookName {

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

引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ,是极不安全的一种方式.在升级一下的新手做法就是在接受窗体中定义一个方法然后通过 调用这个方法来给某个控件或者属性赋值.这两种方法都是非安全的低级方式.非常不建议使用.本文我们讲讲如何通过委托事件(非单纯的委托)来解决窗体间信息传递的问题. 场景: 通过点击主主窗体From_Main的发送按钮,所有

用事件做A窗体关闭B窗体刷新

A窗体 //用委托声明(传一个当前窗体的页面)public delegate void Determine(AddOperationRulesForm frm); //用event 关键字声明事件对象 public event Determine DetermineClick; //在页面做完事,需要关闭窗体是调用 DetermineClick(this); B窗体 //调用A窗体时 var form = new AddOperationRulesForm(_buildingSysNo);   

如何跨线程调用Windows窗体控件

通过一个子线程来操作主线程中的控件,但是,这样作会出现一个问题(如图1所示),就是TextBox控件是在主线程中创建的,在子线程中并没有对其进行创建,也就是从不是创建控件的线程访问它.那么,如何解决跨线程调用Windows窗体控件呢?可以用线程委托实现跨线程调用Windows窗体控件.下面将上一个例子进行一下改动.代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using Sys

子窗体、父窗体方法互调

var childWindow = $("#editFrame")[0].contentWindow;//获取子窗体的window对象. childWindow.subForm(); $("#editFrame")得到frame [0].contentWindow//frame的子窗体,将JQUERY对象转化为DOM对象 subForm();//字窗体定义的方法 ----------------------------------------------------

泛型委托事件详解示例

使用委托时要先实例化,和类一样,使用new关键字产生委托的新实例,然后将一个或者多个与委托签名匹配的方法与委托实例关联.随后调用委托时,就会调用所有与委托实例关联的方法. 与委托关联可以是任何类或者结构中的方法,可以是静态方法,只要是可以访问的方法都可以.创建一个委托类型使用关键字delegate(委托) 一个委托实例,关联三个方法 移除一个委托实例中的方法  使用“-” 将方法作为参数传递 委托可以让方法作为参数传递给其它方法. 事件自身就是委托类型,由于委托可以绑定和调用多个方法,所以会为事