gpt4 book ai didi

c# - 如何使用 Windows 窗体单选按钮进行数据绑定(bind)?

转载 作者:太空狗 更新时间:2023-10-29 17:51:26 29 4
gpt4 key购买 nike

我的数据库中有一个二进制字段,很难在 UI 中使用单个“Is XXXX?”类型的复选框来描述。我宁愿使用一对单选按钮(例如“以 Foo 方式做”和“以 Bar 方式做”),但现在我表单上的所有其他字段都数据绑定(bind)到业务对象。我也想将一对单选按钮数据绑定(bind)到业务对象,但还没有想出一个好的方法来做到这一点。我可以将其中一个按钮绑定(bind)到该字段,这样如果选择了该按钮,该字段将设置为“true”,但是在选择另一个按钮时会取消选择第一个按钮(即,两个单选按钮已正确配对),该字段的值不会更新以反射(reflect)这一点。

我想说

button1.DataBindings.Add(new Binding("checked", source, "useFoo"));
button2.DataBindings.Add(new Binding("checked", source, "!useFoo"));

但我很确定它会在运行时抛出。有没有更简单的方法,或者我应该更多地考虑如何用一个复选框来表达?我不想添加额外的功能来处理这种微不足道的事情......

预计到达时间:一位评论者建议考虑使用下拉菜单 (ComboBox)。我曾考虑过这一点,但我如何将其数据绑定(bind)到数据库中的 bool 字段/业务对象中的属性?如果我将 SelectedItem 绑定(bind)到 useFoo 属性,Items 集合中会出现什么?我是否必须只添加“True”和“False”,或者我是否可以以某种方式添加一个键/值对对象,将显示的项目(“Use Foo”/“Do Not Use Foo”)与其背后的 bool 值联系起来?我找不到有关此的文档。


关于答案:我最终使用的解决方案涉及修改业务对象——基本思想与 Gurge 发布的非常相似,但我在阅读他的回复之前单独提出了它。简而言之,我添加了一个单独的属性,它只返回 !useFoo。一个单选按钮绑定(bind)到 source.UseFoo,另一个绑定(bind)到 source.UseBar(新属性的名称)。确保新属性同时具有 getter 和 setter 很重要,否则您最终会出现非常奇怪的行为。

最佳答案

  1. 绑定(bind)直接链接到您的 bool 值的 RadioButton(即当值为 true 时检查)。
  2. 向此 RadioButton 上的 CheckedChanged 事件添加事件处理程序,如下所示:

    private void radioButton_CheckedChanged(object sender, EventArgs e)
    {
    foreach (Binding b in ((Control)sender).DataBindings)
    b.WriteValue();
    }

关于c# - 如何使用 Windows 窗体单选按钮进行数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/344964/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com