2010-10-11 49 views
1

我试图动态地换出用户控件。我如何'隐藏'面板上的控件?从Controls集合中删除它们不起作用,并且设置控件的可见属性不起作用。面板上的用户控制在可见性设置为false时保持可见

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

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

感谢

+2

您确定要添加的控件是SettingsPannel.Controls集合中的第一个控件吗?如果在那里有另一个控件,你将添加你的设置并设置第一个可见属性! – 2010-10-11 03:34:28

回答

1

检查,以确保控制[0]是真的,你认为这是控制。例如,服务器是否与_view.SettingsPanel.Controls [0]相同?将所有控件添加一次,可能在表单加载或早期时间,然后再设置可见属性会更好吗?这样,您不必担心后面添加太多控件。

+0

是的..我无意中多次添加了相同的控件。 – Nick 2010-10-11 16:35:53

1

您确定控件集合在您添加新项目的时刻为空吗?当你添加一个项目时,它被放置在集合的末尾,所以最好引用最后一个项目。

设法得到控制的指标集合中:

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

恕我直言。

相关问题