如何将以下给定代码从VB更改为C#?

时间:2019-05-02 04:39:00

标签: c# vb.net

我给了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

1 个答案:

答案 0 :(得分:4)

C#没有等效的Handles。您必须将其连接到构造函数中。设计人员(WPF或WinForms)也可以通过InitializeComponent()为您完成此任务,该方法由构造函数调用。

在使用单个事件处理程序的众多控件中,考虑将它们循环连接(如果它们驻留在单个容器中,或者整个窗体/窗口中没有其他CheckBox,则可能是体贴的)。如果没有直接的方法来唯一地标识这些特定的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();
}