检查 TableLayoutPanel 是否包含实例?

Check if TableLayoutPanel contains instance?

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

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

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

using System.Linq;
...

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

并对 mainActiveContr 进行类似的检查。