0

我有这样的代码:

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();

请多多指教。

4

2 回答 2

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";
    }
}

这是一个非常简单的示例,代码可以正常工作,您必须根据需要进行增强

于 2016-09-02T10:41:41.130 回答
0

谢谢大家。我在这件事上找到了根本原因。

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

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

于 2016-09-05T01:08:22.600 回答