具体实现 A 窗体 中加载 B 窗体 B 窗体触发 A 窗体里的方法
当点击 B 窗体确定 Button 事件 给 A 窗体俩个 TextBox 赋值 并关闭 B 窗体
B 窗体
1) 定义参数类
2) 定义委托 定义委托事件
3) 定义触发事件方法
4) 触发事件方法
A 窗体
1) 实例化 B 窗体对象
2) 注册定义的事件
3) 实现事件
代码
B 窗体
1) 定义参数类 也就是 我传过去了俩个字段 (这俩个字段 让我封装成的类)
- // 对象
- public class ItemEventArges:EventArgs
- {
- public ItemListControlViewModel value;
- public ItemEventArges(ItemListControlViewModel v)
- {
- value = v;
- }
- }
2)3) 定义委托与委托事件
- public delegate void ItemEventHandler(object sender,ItemEventArges arge);
- public delegate void ItemCloseEventHandler(object sender);
4) 定义触发事件方法 用来方便调用
- /// <summary>
- /// 触发事件
- /// </summary>
- /// <param name="e"></param>
- protected virtual void OnItemEvent(ItemEventArges e)
- {
- if (ItemEvent != null)
- {
- ItemEvent(this, e);
- }
- }
5) 点击选中按钮时 触发 事件方法 传参
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- ItemListControlViewModel model = Listview.SelectedItem as ItemListControlViewModel;
- OnItemEvent(new ItemEventArges(model));
- }
A 窗体
1) 实例化 B 窗体 注册事件 实现事件内容
- // 实例化 B 窗体
- ItemListControl us = new ItemListControl();
- // 注册事件
- us.ItemEvent += us_ItemEvent;
- // 实现内容方法
- void us_ItemEvent(object sender, ItemEventArges arge)
- {
- // 赋值
- TxTItem.Text = arge.value.ItemName;
- TxtID.Text = arge.value.ItemID;
- Windows.Close();
- }
以上都是测试数据
来源: http://www.bubuko.com/infodetail-3342247.html