我正在尝试动态更换用户控件。如何在面板上“隐藏”控件?从Controls集合中删除它们不起作用,并且设置控件的visible属性不起作用。
ServersView servers = new ServersView();
ServersPresenter presenter = new ServersPresenter(servers);
_view.SettingsPanel.Controls.Add(servers);
_view.SettingsPanel.Controls[0].Visible = false;
添加后新控件不可见,因为其他用户控件仍然可见。有人能告诉我如何隐藏用户控件吗?
由于
答案 0 :(得分:1)
检查以确保控件[0]确实是您认为的控件。例如,服务器与_view.SettingsPanel.Controls [0]具有相同的对象吗?是否可以更好地添加所有控件一次,可能是在表单加载或某些早期时间,然后稍后设置可见属性?这样,您就不必担心以后添加太多控件了。
答案 1 :(得分:1)
在添加新项目时,您确定控件集合是空的吗?添加项目时,它会放在集合的末尾,因此最好引用最后一项。
尝试获取集合中控件的索引:
int index = _view.SettingsPanel.Controls.GetChildIndex(servers);
_view.SettingsPanel.Controls[index].Visible = false;
IMHO。