首页 > 解决方案 > 如何将下面给定的代码从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#vb.net

解决方案


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();
}

推荐阅读