[英]Best way adding custom property to radiobutton in c#
在C#中將自定義屬性添加到單選按鈕的最佳方法是什么?
背景:
我正在開發一個小型的winform工具,並在單擊執行按鈕時使用2個單選按鈕組來設置一些信息。 現在我不想去:
if(rb1.checked){...}
if(rb2.checked){...}
//and so on...
我實際上缺少的是值屬性...在大多數語言中,例如PHP復選框,至少具有3個基本屬性...
我想獲取返回的值。 例如,復選框的名稱為Foo
,文本或標題為Bar
但我想要的值應該是hello world
。
下一個想法是創建一個從radiobutton派生的radiobutton類
class myRadioButton : RadioButton { ... }
但這是最好的方法嗎……(在我看來,這有點過分了!!),這是實現這一目標的唯一方法嗎?
我為asp添加了一些屬性到xml部分而找到了一些答案...但是我不使用asp,如果適合的話,實際上我不使用no。
如您所知,從現有RadioButton類派生是一種可能的解決方案。
但是,另一種可能更簡單的方法是使用每個Winforms控件上都存在的“標記”屬性。
這只是一個對象屬性,供您隨意使用。 因此,最簡單的方法是添加一個字符串。
radioButton1.Tag = "Any string you like";
或者您可以添加自己的自定義類
MyCustomClass myObj = new MyCustomClass { MyClassName = "Class Name", MyCaption = "Caption", MyValue = "Value to add" };
radioButton1.Tag = myObj;
然后您可以在需要時使用它。
MyCustomClass newObj = radioButton1.Tag as MyCustomClass;
if (newObj != null)
{
//do stuff here
}
如果要通過屬性擴展RadioButton
類,我在WinForms
中看不到其他方法,則按照您的描述擴展該類。 也建議這樣做。
這樣,您就可以將控件的行為清楚地分為一個類,並且不會污染您的業務邏輯。
如果您不想使用LINQ,可以使用LINQ:
if(rb1.checked){...}
if(rb2.checked){...}
//and so on...
在LINQ中,您可以編寫:
var checkedRadioButton = container.Controls.OfType<RadioButton>()
.FirstOrDefault(r => r.Checked);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.