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

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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. }

以上都是测试数据 

技术图片

以上是关于WPF 委托 事件 B窗体调用A窗体方法的主要内容,如果未能解决你的问题,请参考以下文章

wpf窗体添加事件的地方在哪里?

C中怎样在1个窗体中调用调用另外一个窗体中的方法!

怎么给wpf添加一个窗体加载事件

WPF窗口与windowsForm窗体之间的问题,怎么调用close()

c#datagirdview ,用DataSource 方式赋值,然后更新出问题问题

WPF 子窗体 在 父窗体 中 打开,初学不懂,请指教