获取控件数组中的控制索引

时间:2010-05-27 15:14:09

标签: c# arrays controls indexing

我有一个TextBox数组

private TextBox[,] Fields = new TextBox[9, 9];

并且所有TextBox都有相同的TextChanged-Event

void Field_Changed( object sender, EventArgs e )

有没有办法在数组中获取发送者的索引(不给每个TextBox它自己的EventHandler)?

5 个答案:

答案 0 :(得分:1)

  1. 您真的需要索引,发件人是对发送请求的实例的引用。

  2. 如果1的答案为是,您可以将索引放在文本框的'Tag'属性中,然后查询。

  3. 或者,您可以在数组中搜索与事件的sender参数匹配的实例。

答案 1 :(得分:1)

你几乎必须遍历你的数组,并在每个文本框上进行引用相等性检查。

将控件插入数组时,将索引分配给标记。但这是微观优化并不值得。

答案 2 :(得分:0)

尝试在初始化时为每个文本框提供自己的TagName,然后您可以将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()方法。有多个重载。选择最适合您需求的那个。

相关问题