System.Windows.Forms.Control.ControlCollection.Add是幂等的吗?

时间:2010-07-30 06:08:32

标签: winforms

换句话说,下面代码中的第2行会有效吗?

// let's assume that myForm has not previously been added  
myControlCollection.Add(myForm);
myControlCollection.Add(myForm); // line 2 

3 个答案:

答案 0 :(得分:2)

不会对第二行产生任何影响。该集合不会两次添加相同的控件实例。

答案 1 :(得分:2)

执行第二行时不会有任何影响。

答案 2 :(得分:2)

我相信立即连续两次执行Add将没有明显效果。但是,如果对其他控件进行干预Add调用,则会 - 因为Add更新Z顺序,将新添加的控件发送到后面。例如:

using System;
using System.Drawing;
using System.Windows.Forms;

class Test
{
    static void Main()
    {
        Form f = new Form();
        Button b1 = new Button
        {
            Location = new Point(50, 50),
            Size = new Size(40, 40),
            Text = "b1"
        };
        Button b2 = new Button
        {
            Location = new Point(70, 70),
            Size = new Size(40, 40),
            Text = "b2"
        };

        f.Controls.Add(b1);
        f.Controls.Add(b2);
//        f.Controls.Add(b1); 
        Application.Run(f);
    }
}

这会在b1前显示b2 - 但如果您取消注释第二次Add(b1),则订单将被撤销。