我正在开发一个小型应用程序,我已经将我的单选按钮与一个公共类中的列表“配对”。这样做的目的是打开/关闭相应的列表


 public class myType
 {
 public RadioButton button {get;组; }
 public ListBox list {get;组; }
}



 我继续通过数组内的for循环创建这些对

 
 for(int i = 0; i< broj_botuna; i ++)
 {
 theArray [i] = new myType();
}



 我为所有单选按钮使用公共事件处理程序:


 private void test_CheckedChanged(object sender,EventArgs e)
 {
 var xx = sender作为RadioButton;
 //做东西
 positionInArray = Array.IndexOf(theArray,xx);
}



 除了最后一行代码“xx”应该属于“myType”而不是我设法检索的“radioButton”。


所以有人可以告诉我如何从“radioButton”获取“myType”的引用“?或者有更好的选择吗?

答案 0 :(得分:1)
您可以使用Array.FindIndex
之类的:
var positionInArray = Array.FindIndex(theArray, b => b.button == xx);
答案 1 :(得分:1)
您可以创建一些构造,以便您可以根据需要轻松地将属性与父对象关联。
这种方法可以让您始终引用您的父类型,前提是您在获取的内容中添加了更多代码并设置了。
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;
}
}