【发布时间】:2020-03-04 04:05:56
【问题描述】:
我试图跟上一个状态机,我在面板中有多个控件。我所做的是在绑定到 CheckBox 的表单上设置一个布尔属性。为我希望在属性为 True 时可见的控件设置数据绑定很简单:
Public Property IsCalibration As Boolean = True
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
CheckBoxIsCalibration.DataBindings.Add(New Binding("Checked", Me, "IsCalibration", False, DataSourceUpdateMode.OnPropertyChanged, False))
ButtonStartCalibration.DataBindings.Add(New Binding("Visible", Me, "IsCalibration", False, DataSourceUpdateMode.OnPropertyChanged, False))
ButtonSave.DataBindings.Add(New Binding("Visible", Me, "IsCalibration", False, DataSourceUpdateMode.OnPropertyChanged, False))
LabelProductionNumber.DataBindings.Add(New Binding("Visible", Me, "IsCalibration", False, DataSourceUpdateMode.OnPropertyChanged, False))
TextBoxProductionNumber.DataBindings.Add(New Binding("Visible", Me, "IsCalibration", False, DataSourceUpdateMode.OnPropertyChanged, False))
LabelEngageNumber.DataBindings.Add(New Binding("Visible", Me, "IsCalibration", False, DataSourceUpdateMode.OnPropertyChanged, False))
TextBoxEngageNumber.DataBindings.Add(New Binding("Visible", Me, "IsCalibration", False, DataSourceUpdateMode.OnPropertyChanged, False))
TextBoxEngageNumber.DataBindings.Add(New Binding("Visible", Me, "IsCalibration", False, DataSourceUpdateMode.OnPropertyChanged, False))
End Sub
但是,当 IsCalibration 为 False 时,如何为要隐藏的控件设置数据绑定?类似于“不可见”数据绑定的东西。
我知道另一种选择是设置一个可覆盖的子组件,当 IsCalibration 属性更改时调用该子组件,它会调用一个事件,该事件可以将名为 IsNotCalibration 的单独属性的值设置为相反的值IsCalibration 是什么,以便我可以将其他控件绑定到该 IsNotCalibration 属性。但我不喜欢这种解决方案,这似乎是一种不必要的措施,只是为了设置有效的“不可见”效果。
另外补充一点,当我使用 VB.NET 时,我对 C# 解决方案非常满意,因为它们基本上是同一种语言,但语法风格不同。
【问题讨论】: