当可见设置为false时,Panel上的用户控件仍然可见

时间:2010-10-11 03:04:40

标签: c# winforms user-controls

我正在尝试动态更换用户控件。如何在面板上“隐藏”控件?从Controls集合中删除它们不起作用,并且设置控件的visible属性不起作用。

ServersView servers = new ServersView();           
       ServersPresenter presenter = new ServersPresenter(servers);
       _view.SettingsPanel.Controls.Add(servers);
       _view.SettingsPanel.Controls[0].Visible = false;

添加后新控件不可见,因为其他用户控件仍然可见。有人能告诉我如何隐藏用户控件吗?

由于

2 个答案:

答案 0 :(得分:1)

检查以确保控件[0]确实是您认为的控件。例如,服务器与_view.SettingsPanel.Controls [0]具有相同的对象吗?是否可以更好地添加所有控件一次,可能是在表单加载或某些早期时间,然后稍后设置可见属性?这样,您就不必担心以后添加太多控件了。

答案 1 :(得分:1)

在添加新项目时,您确定控件集合是空的吗?添加项目时,它会放在集合的末尾,因此最好引用最后一项。

尝试获取集合中控件的索引:

int index = _view.SettingsPanel.Controls.GetChildIndex(servers);
_view.SettingsPanel.Controls[index].Visible = false;

IMHO。