如何控制动态添加的usercontrol?

时间:2016-09-02 09:16:13

标签: c# winforms dynamic-usercontrols

我有这样的代码:

MyUserControl[] myControl = new MyUserControl[10];

表单加载时:

for( int i = 0; i < 10; i++ )
{
    myControl[i] = new MyUserControl();
    myControl[i].label1.Text = "Title";

    this.Controls.Add ( myControl[i] );
}

现在正常显示。

然后按下按钮如下:

private void Button1_Click(object sender, EventArgs e)
{
    myControl[0].label1.Text = "Other Title";
}

当我看到调试模式时,正常添加了值,但是lable1文本没有显示“其他标题”。

所以,我尝试使用以下方法,但不能正常工作。

myControl[0].label1.Update();
myControl[0].label1.Invalidate();
myControl[0].label1.Refresh();

请劝告。

2 个答案:

答案 0 :(得分:0)

  

我不理解你的概念希望这个例子适合你

private void Button1_Click(object sender, EventArgs e)
{
    //myControl[0].label1.Text = "Other Title";

    MyUserControl ctrl = null;
    foreach (var c in this.Controls)
    {
        if (c.GetType().Name == "MyUserControl")
        {
            var myctrl = (MyUserControl)c;
            if (myctrl.Text == "Title")
            {
                ctrl = myctrl;
                break;
            }
        }
    }
    if (ctrl != null)
    {
        ctrl.Text = "Other Title";
    }
}

这是一个非常简单的示例,代码可以正常工作,您必须随心所欲地进行增强

答案 1 :(得分:0)

谢谢大家。我在这件事上有根本原因。

myControl[0].label1.Text = "Other Title";
myControl[0].BringToFront(); // <- Solved problem with this code.

我不知道为什么z-order被扭曲了。