马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.首先你需要 两个窗体 可以叫做 A和B窗体。现在呢从A窗体弹出B窗体 然后B窗体返回值到A窗体如何优雅的完成呢?
办理方式:
可以试试委托
第一步在B窗体界说委托方法
- public delegate void ValueChangedHandler(object sender, EventArgs<List<DataGridViewRow>> e);
- public event ValueChangedHandler ValueChanged;
复制代码 然后第二步在你需要回传的时候实行
- ValueChanged(this, new EventArgs<List<DataGridViewRow>>(listMoDId));
复制代码 备注:listMoDId 就是List<DataGridViewRow>
第三步A窗体吸收创建一个方法
- private void BulletFrame_ValueChanged(object sender, BulletFrame.EventArgs<List<DataGridViewRow>> e)
- {
- //e.Value 就是传过来的值
- }
复制代码 第四步 A窗体的BulletFrame_ValueChanged方法要绑定到B窗体上面
- B frm = new B();
- frm.ValueChanged += BulletFrame_ValueChanged;
- frm.ShowDialog();
复制代码 来讲点理论吧:
在C#中,delegate 和 event 是两个非常有用的关键字,它们经常一起使用来在类之间传递消息或通知
delegate(委托)
委托就似乎一个银行可以吸收多个方法泉源 ValueChangedHandler 是一个委托范例,它界说了一个方法签名,该方法没有返回值(void),继承两个参数:
object sender:通常用于传递触发变乱的对象。这是一个常见的模式,允许变乱处置惩罚步调知道是哪个对象触发了变乱(作用于A和B建立绑定之后有一个唯一的标识可以精准指定是谁和我建立了绑定)
EventArgs<List<DataGridViewRow>> e:这是一个泛型参数,假设 EventArgs<T> 是一个自界说的或来自某个库的泛型类,它继承自 EventArgs 类。这个参数用于传递与变乱相关的数据,固然你可在里面写任意的类返回
Event(变乱)
接下来,event 关键字用于在类中声明一个变乱。变乱是基于委托的,它允许类或对象提供通知。在例子中,ValueChanged 是一个变乱,它的范例是之前声明的 ValueChangedHandler 委托。这意味着任何订阅了 ValueChanged 变乱的方法都必须符合 ValueChangedHandler 委托的签名。
怎么使用订阅变乱呢?
当其他类(或同一个类中的其他方法)想要知道 ValueChanged 变乱何时发生时,它们可以订阅该变乱。订阅变乱通常是通过将符合委托签名的方法作为参数传递给 += 操作符来完成的
- frm.ValueChanged += BulletFrame_ValueChanged;
复制代码 总结
通过这种方式,delegate 和 event 提供了一种机动且范例安全的方式来在C#中的类之间传递消息和通知。它们是实现变乱驱动编程模式的关键组件。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |