我有一个TextBox数组
private TextBox[,] Fields = new TextBox[9, 9];
并且所有TextBox都有相同的TextChanged-Event
void Field_Changed( object sender, EventArgs e )
有没有办法在数组中获取发送者的索引(不给每个TextBox它自己的EventHandler)?
答案 0 :(得分:1)
您真的需要索引,发件人是对发送请求的实例的引用。
如果1的答案为是,您可以将索引放在文本框的'Tag'属性中,然后查询。
或者,您可以在数组中搜索与事件的sender
参数匹配的实例。
答案 1 :(得分:1)
你几乎必须遍历你的数组,并在每个文本框上进行引用相等性检查。
将控件插入数组时,将索引分配给标记。但这是微观优化并不值得。
答案 2 :(得分:0)
尝试在初始化时为每个文本框提供自己的Tag
或Name
,然后您可以将sender
转换为TextBox并查看其中任何一个属性。
答案 3 :(得分:0)
您可以遍历对象并找到其引用等于发送者的对象:
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
if (Object.ReferenceEquals(sender, Fields[i, j]))
Console.WriteLine(i + " " + j);
}
}
答案 4 :(得分:0)
注意Array Members可能有所帮助。
您特别关注的是IndexOf()
方法。有多个重载。选择最适合您需求的那个。