我给了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
答案 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();
}