我想检查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);
答案 0 :(得分:2)
您应该检查用户控件的 types ,因为每个实例都是唯一的:
using System.Linq;
...
if (!tableLayoutPanel1.Controls.OfType<UserControl>()
.Select(u => u.GetType())
.Any(t => t.Equals(userControl.GetType())))
对mainActiveContr
进行类似的检查。