检查TableLayoutPanel是否包含实例?

时间:2015-03-14 14:44:38

标签: c# winforms visual-studio instance

我想检查TableLayoutPanels是否已经包含UserControl的实例,但它不会像这样工作。 mainActiveContr!= userControl都是AddEntryControl的一个实例,所以不应该是假的吗?这是真的...... 包含似乎也返回true,但不应该返回false ??

private UserControl mainActiveContr;

private void IsUserControlAlreadyActive(UserControl userControl)
{
    if (!tableLayoutPanel1.Contains(userControl) && mainActiveContr != userControl)
        this.tableLayoutPanel1.Controls.Add(userControl, 3, 2);

}

如果有人点击按钮,我会创建一个UserControl实例,然后我想检查它。

AddEntryControl formChild1 = new AddEntryControl();
IsUserControlAlreadyActive(formChild1);

1 个答案:

答案 0 :(得分:2)

您应该检查用户控件的 types ,因为每个实例都是唯一的:

using System.Linq;
...

if (!tableLayoutPanel1.Controls.OfType<UserControl>()
                      .Select(u => u.GetType())
                      .Any(t => t.Equals(userControl.GetType())))

mainActiveContr进行类似的检查。