如果我有三个单选按钮,将它们绑定(bind)到具有相同选项的枚举的最佳方法是什么?例如
[] Choice 1
[] Choice 2
[] Choice 3
public enum MyChoices
{
Choice1,
Choice2,
Choice3
}
最佳答案
我知道这是一个老问题,但它是第一个出现在我的搜索结果中的问题。我找到了一种将单选按钮绑定(bind)到枚举,甚至是字符串或数字等的通用方法。
private void AddRadioCheckedBinding<T>(RadioButton radio, object dataSource, string dataMember, T trueValue)
{
var binding = new Binding(nameof(RadioButton.Checked), dataSource, dataMember, true, DataSourceUpdateMode.OnPropertyChanged);
binding.Parse += (s, a) => { if ((bool)a.Value) a.Value = trueValue; };
binding.Format += (s, a) => a.Value = ((T)a.Value).Equals(trueValue);
radio.DataBindings.Add(binding);
}
然后在表单的构造函数或表单加载事件中,在每个 RadioButton
控件上调用它。
dataSource
是包含您的枚举属性的对象。我确保 dataSource
实现了 INotifyPropertyChanged
接口(interface),在枚举属性 setter 中触发了 OnPropertyChanged
事件。
AddRadioCheckedBinding(Choice1RadioButton, dataSource, "MyChoice", MyChoices.Choice1);
AddRadioCheckedBinding(Choice2RadioButton, dataSource, "MyChoice", MyChoices.Choice2);
关于c# - Winforms 将枚举绑定(bind)到单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2476829/