简体   繁体   English

数据绑定到单选按钮(组)

[英]databind to radio button (group)

I'm trying to somehow bind an entity field(?) to a radio button.我试图以某种方式将实体字段(?)绑定到单选按钮。

Perhaps an example:也许是一个例子:

I have a groupbox with two radio buttons in it: Toss Won and Toss Lost.我有一个带有两个单选按钮的分组框:Toss Won 和 Toss Lost。 I have a database field called TossWon.我有一个名为 TossWon 的数据库字段。 What I want to happen, is when Toss Won is Checked, then TossWon should be 1 (ie true).我想要发生的是,检查托盘时检查,那么Tosswon应该是1(即真实)。 When Toss Lost is Checked, TossWon should be false.检查丢失后,炸浪应该是假的。

How can I do this?我怎样才能做到这一点? Should I be binding to some property of the groupbox (don't think so), or to one or both of the radio buttons?我应该绑定到 groupbox 的某些属性(不这么认为),还是绑定到一个或两个单选按钮?

I know I can use events, but I'm wondering if there is a 'better' way.我知道我可以使用事件,但我想知道是否有“更好”的方法。

避免事件的优雅解决方案是在数据库中添加计算字段TossLost= NOT(TossWon)

Data bind TossWon to both radio buttons.数据将TossWon绑定到两个单选按钮。

Then handling the Binding.Parse / Binding.Format event of the radio buttons然后处理单选按钮的Binding.Parse / Binding.Format事件

// Displaying data, true if data is 1 else false
rdoTossWin.DataBindings[0].Parse += (sender, e) => e.Value = ((int)e.Value) == 1;
// Change the true to 1 and false to 0
rdoTossWin.DataBindings[0].Format += (sender, e) => e.Value = (bool)e.Value ? 1 : 0;

As HubertL pointed out, only one filed suffices.正如 HubertL 所指出的,只有一个文件就足够了。 You should put both radio buttons in a groupbox so that checking one causes the other one be unchecked without writing any code.您应该将两个单选按钮放在一个 groupbox 中,以便在不编写任何代码的情况下选中一个会导致另一个被取消选中。 The you can simply bind property TossWon to Checked property of rdTossWin :在你可以简单的绑定属性TossWonChecked的财产rdTossWin

rdTossWin.DataBindings.Add("Checked", yourDataSource,"TossWin");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM