0

好的,所以我正在尝试在表单上移动按钮。我使用以下代码来调用按钮:

i++;
Button button = new Button();
button.Location = new Point(160, 30 * i + 10);
button.Click += new EventHandler(b_Click);
button.Tag = i;
panel1.Controls.Add(button);

我可以单击每个按钮并获得一个显示其标签的消息框,但我想使用他们的标签作为一种通过计时器移动按钮的方式。

4

1 回答 1

0

假设这是 WinForms,您可以在 Form Controls 集合上使用 Linq 查询,通过其标签查找按钮。

    var found = (from Control c 
                 in this.Controls 
                 where c.Tag == "ButtonTag"
                 select c).FirstOrDefault() as Button;

    if (found != null)
    {
        // manipulate the button
    }

我应该注意,这只会在表单上找到顶级控件。它不会找到容器控件(如面板)内部的按钮。如果您的按钮在容器中,只需将“this”替换为您的容器名称。

    var found = (from Control c 
                 in panel1.Controls 
                 where c.Tag == "ButtonTag"
                 select c).FirstOrDefault() as Button;

我还应该注意,在具有大量控件的表单上这可能会很慢。

于 2013-11-03T01:03:31.413 回答