在事先不知道名称的情况下访问对象

时间:2015-01-17 18:26:03

标签: c# winforms

如何在不知道其名称的情况下访问对象? (如何连接对象名称)。 我有以下代码:

    private void pb1_Click(object sender, EventArgs e)
    {
        Check("1");
    }


    void Check(string x)
    {   
            if (("pb"+x).Image == img1)
            {
                ("pb"+x).Image = img2;                    
            }            
    }

2 个答案:

答案 0 :(得分:1)

这不是解决问题的方法。我建议您使用字典来跟踪加载的对象,然后在字典中按编号查找它们。

private Dictionary<int, MyClass> myDict = new Dictionary<int, MyClass>();

void Check(int value)
{
    MyClass target = null;
    myDict.TryGetValue(value, out target);
    //target.Image = etc.
}

答案 1 :(得分:0)

您不应传递控件的名称。通过传递对象的引用会更好,你已经在eventhandler中使用了它:

private void pb1_Click(object sender, EventArgs e)
{
    SwapImages(sender as PictureBox);
}

private void SwapImages(PictureBox pb)
{   
    if (pb.Image == img1)
    {
        pb.Image = img2;                    
    }            
}