首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c#中向放射按钮添加自定义属性的最佳方法

在c#中向放射按钮添加自定义属性的最佳方法
EN

Stack Overflow用户
提问于 2017-07-31 08:03:57
回答 3查看 894关注 0票数 0

在c#中向无线电按钮添加自定义属性的最佳方法是什么?

背景:

我正在开发一个小型的winform工具,并使用两个无线电按钮组来设置一些信息时,点击执行按钮。现在我不想去:

代码语言:javascript
复制
if(rb1.checked){...}
if(rb2.checked){...}
//and so on...

我真正缺少的是价值财产..。在大多数语言中,例如PHP复选框至少有3个基本属性..。

  • 标识复选框的名称/类/ID\x
  • 文本/标题(或任何您想要调用的名称)以向用户显示标题
  • 值_~_

我想要得到返回的值。例如,复选框的名称是Foo,文本或标题是Bar,但是我想要的值应该是hello world

下一个想法是创建一个从无线电按钮派生出来的无线电按钮类。

代码语言:javascript
复制
class myRadioButton : RadioButton { ... }

但这是最好的方法..。(在我看来,这是一种超能力?!!)这是实现这一目标的唯一途径吗?

我找到了一些asp的代码,向xml部件添加了一些属性.但是我不使用asp,如果这个合适的话,实际上也不使用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-31 08:22:32

正如您已经指出的,从现有的RadioButton类派生是一种可能的解决方案。

但是,另一种可能更简单的方法是在每个Winforms控件上使用存在(我相信)存在的"Tag“属性。

这只是一个对象属性,您可以随意使用。所以最简单的方法就是添加一个字符串。

代码语言:javascript
复制
radioButton1.Tag = "Any string you like";

或者您可以添加您自己的自定义类。

代码语言:javascript
复制
MyCustomClass myObj = new MyCustomClass { MyClassName = "Class Name", MyCaption = "Caption", MyValue = "Value to add" };
radioButton1.Tag = myObj;

然后你可以在需要的时候使用它。

代码语言:javascript
复制
MyCustomClass newObj = radioButton1.Tag as MyCustomClass;
if (newObj != null)
{
  //do stuff here
}
票数 2
EN

Stack Overflow用户

发布于 2017-07-31 08:08:19

如果您想通过属性扩展RadioButton类,我在WinForms中看不到其他方法,然后像您所描述的那样扩展该类。还建议以这种方式这样做。

这样,您就可以将控件的行为清楚地分离到一个类中,并且不会污染您的业务逻辑。

票数 1
EN

Stack Overflow用户

发布于 2017-07-31 08:14:22

如果不想使用LINQ,可以使用:

代码语言:javascript
复制
if(rb1.checked){...}
if(rb2.checked){...}
//and so on...

在LINQ中你可以写:

代码语言:javascript
复制
var checkedRadioButton = container.Controls.OfType<RadioButton>()
                                      .FirstOrDefault(r => r.Checked);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45410395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档