c# - 如何将下面给定的代码从VB更改为C#?
问题描述
我给出了一个 vb.net 函数,我必须将它转换为 C#。此函数处理复选框事件更改。
Private Sub ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
CBD.CheckedChanged,
Travelkm.TextChanged,
Priority.CheckedChanged,
OtherCost.TextChanged,
Dangerous.CheckedChanged,
Over5Kg.CheckedChanged,
Living.CheckedChanged,
Guarantee.CheckedChanged,
NoGuarantee.CheckedChanged,
Corporate.CheckedChanged,
UnusualShape.CheckedChanged,
Over40kg.CheckedChanged,
Fragile.CheckedChanged
Me.CalculateQuote()
End Sub
解决方案
C# 没有Handles
等价物。您必须在构造函数中将其连接起来。设计器(WPF 或 WinForms)也可以为您执行此操作,通过InitializeComponent()
它从构造函数调用。
对于使用单个事件处理程序的这么多控件,将它们连接在一个循环中可能会考虑周到(以防它们驻留在单个容器中或整个窗体/窗口中没有其他复选框)。如果没有直接唯一标识这些特定 CheckBox 的方法,您可以使用它们的Tag
属性将它们与其他复选框区分开来。
所以总的来说它看起来像这样:
public YourClass()
{
InitializeComponent();
foreach(var C in this.Controls.OfType<CheckBox>().Where(c => c.Tag == "yourTag"))
c.ValueChanged += ValueChanged;
}
private void ValueChanged(object sender, System.EventArgs e)
{
this.CalculateQuote();
}
推荐阅读
- maps - 使用搜索功能将谷歌地图添加到后台设置
- javascript - 始终突出显示“TabButton” - (自定义样式)
- powershell - PowerShell:如何取消注册孤立的 WMI 事件
- laravel - 如何在 Laravel 中格式化存储(不是数据库)中的预格式化日期
- java - 将文本输入到演示文稿(外部显示器)
- haskell - `((,) e` 在 Haskell 中是什么意思?
- angular - 在 Angular 6 中使用反应式表单的多层表单
- java - 沿 X 和 Z 轴实现相机旋转时出现问题
- javascript - 获取 POST 请求中的空正文
- audio - 需要帮助来运行 libjitsi 示例