C# 我可以使用数据绑定格式化事件有条件地选中复选框吗?

C# 我可以使用数据绑定格式化事件有条件地选中复选框吗?,c#,winforms,data-binding,formatting,C#,Winforms,Data Binding,Formatting,这里关于格式化数据绑定控件的信息非常有用 现在,如果我想有条件地选中复选框,有没有办法使用格式化事件来实现这一点?目前我的代码是: // if gender = "N" Index = -1, if "F", index = 0, if "M" index = 1; if (platypusInfo.Gender.Equals("F")) { radioButtonFemale.Checked = true; radioButtonMale.Checked = false; }

这里关于格式化数据绑定控件的信息非常有用

现在,如果我想有条件地选中复选框,有没有办法使用格式化事件来实现这一点?目前我的代码是:

// if gender = "N" Index = -1, if "F", index = 0, if "M" index = 1;
if (platypusInfo.Gender.Equals("F")) {
    radioButtonFemale.Checked = true;
    radioButtonMale.Checked = false;
} else if (platypusInfo.Gender.Equals("M")) {
    radioButtonMale.Checked = true;
    radioButtonFemale.Checked = false;
} else { // (platypus.Gender == "N")
    radioButtonFemale.Checked = false;
    radioButtonMale.Checked = false;
}

除了
Binding.Format
事件外,还有一个
Binding.Parse
事件,您可以使用它来反转信息

每个单选按钮都需要自己的数据绑定设置:

Binding maleBind = new Binding("Checked", person, "Gender", true);
maleBind.Format += new ConvertEventHandler(maleBind_Format);
maleBind.Parse += new ConvertEventHandler(maleBind_Parse);
radioButtonMale.DataBindings.Add(maleBind);

Binding femaleBind = new Binding("Checked", person, "Gender", true);
femaleBind.Format += new ConvertEventHandler(femaleBind_Format);
femaleBind.Parse += new ConvertEventHandler(femaleBind_Parse);
radioButtonFemale.DataBindings.Add(femaleBind);
然后是事件:

void femaleBind_Parse(object sender, ConvertEventArgs e) {
  if ((bool)e.Value)
    e.Value = "F";
}

void femaleBind_Format(object sender, ConvertEventArgs e) {
  e.Value = ((string)e.Value == "F");
}

void maleBind_Parse(object sender, ConvertEventArgs e) {
  if ((bool)e.Value)
    e.Value = "M";
}

void maleBind_Format(object sender, ConvertEventArgs e) {
  e.Value = ((string)e.Value == "M");
}

除了
Binding.Format
事件外,还有一个
Binding.Parse
事件,您可以使用它来反转信息

每个单选按钮都需要自己的数据绑定设置:

Binding maleBind = new Binding("Checked", person, "Gender", true);
maleBind.Format += new ConvertEventHandler(maleBind_Format);
maleBind.Parse += new ConvertEventHandler(maleBind_Parse);
radioButtonMale.DataBindings.Add(maleBind);

Binding femaleBind = new Binding("Checked", person, "Gender", true);
femaleBind.Format += new ConvertEventHandler(femaleBind_Format);
femaleBind.Parse += new ConvertEventHandler(femaleBind_Parse);
radioButtonFemale.DataBindings.Add(femaleBind);
然后是事件:

void femaleBind_Parse(object sender, ConvertEventArgs e) {
  if ((bool)e.Value)
    e.Value = "F";
}

void femaleBind_Format(object sender, ConvertEventArgs e) {
  e.Value = ((string)e.Value == "F");
}

void maleBind_Parse(object sender, ConvertEventArgs e) {
  if ((bool)e.Value)
    e.Value = "M";
}

void maleBind_Format(object sender, ConvertEventArgs e) {
  e.Value = ((string)e.Value == "M");
}