如何将对象与单选按钮配对
本文关键字:单选按钮 对象 | 更新日期: 2023-09-27 18:32:23
我正在开发一个小表单应用程序,我已经将我的单选按钮与普通类中的列表"配对"。这样做的目的是打开/关闭相应的列表
public class myType
{
public RadioButton button { get; set; }
public ListBox list { get; set; }
}
我继续通过数组内的 for 循环创建这些对
for (int i = 0; i < broj_botuna; i++)
{
theArray[i] = new myType();
}
我对所有单选按钮使用通用事件处理程序:
private void test_CheckedChanged(object sender, EventArgs e)
{
var xx = sender as RadioButton;
//do stuff
positionInArray = Array.IndexOf(theArray, xx);
}
除了最后一行代码"xx"应该是"myType"类型,而不是我设法检索的"radioButton"。
那么谁能告诉我如何获得从"radioButton"到"myType"的引用? 还是有更好的选择?
您可以使用
如下Array.FindIndex
:
var positionInArray = Array.FindIndex(theArray, b => b.button == xx);
您可以创建一些构造,以便根据需要轻松地将属性与父对象相关联。
此方法将允许您始终引用父类型,前提是您在 get 和 set 中添加了更多代码。
static void Main()
{
myType item = new myType();
var button = new Button();
myType.button = button;
var list = new ListBox();
myType.list = list;
item = list.GetParent();
bool isSameButton = button == item.button;
bool isSameList = list == item.list;
Assert.IsTrue(isSameButton);
Assert.IsTrue(isSameList);
}
public class myType
{
private RadioButton _button;
public RadioButton button
{
get { return _button; }
set {
value.AssociateParent(this);
_button = value;
}
}
private ListBox _list;
public ListBox list
{
get { return _list; }
set {
value.AssociateParent(this);
_list= value;
}
}
}
public static class Extensions
{
private static Dictionary<object, object> Items { get; set; }
static Extensions()
{
Items = new Dictionary<object, object>();
}
public static void AssociateParent(this object child, object parent)
{
Items[child] = parent;
}
public static object GetParent(this object child)
{
if (Items.ContainsKey(child)) return Items[child];
return null;
}
}