c# - 将相同的事件应用于 C# 中的每个项目按钮
问题描述
我有一个包含 3 个表单和 10 个用户控件的项目。这些组件中的每一个都有大约 10 个按钮。我想在用户悬停时使用事件来应用样式。有没有办法可以为通用组件创建此事件,然后将其自动应用于每个组件?因为我不一定有心情手动完成130个按钮事件^^
解决方案
您可以使用递归方法并在表单上调用它。它将遍历表单的所有子控件及其子控件,如果它们是按钮,它将链接到您的集中式方法。
这是一个带有 Click 事件的示例,但它可以应用于任何事情:
private void RecursiveClickSubscribe(Control c)
{
if (c is Button)
{
c.Click += GenericClickHandler;
}
foreach (Control child in c.Controls)
{
RecursiveClickSubscribe(child);
}
}
private void GenericClickHandler(object sender, EventArgs e)
{
// stuff you want to do on every click
}
Form myForm; // one of your three forms.
RecursiveClickSubscribe(MyForm);
推荐阅读
- swift - Swift:Facebook Graph API 不接受有效的 access_token
- c# - Xamarin Android C# 断开连接后恢复下载
- mysql - 我可以在 GroupBy 中使用偏移(跳过)吗?
- bootstrap-4 - 使用 `img-fluid` 时,Bootstrap 的 `col .col-md-4` 类不起作用
- geometry - 使用深度和法线数据查找 rgbd 图像中的所有平面
- c# - 把时间留到周日晚上 9:30
- python-3.x - tkintertable,如何阻止/禁用列或单元格
- mysql - 如何使用列表和之间选择查询
- image-processing - Chainer 自动编码器
- java - 无法使用 RecyclerAdapter 将对象转换为字符串值