小弟最近刚学C#,遇到些问题。我做了两个用户控件,用一个treeview来控制它们,两个控件重叠的放到一个窗口里,要求点击A节点时显示控件A,点击B节点时显示控件B,估计以后还会在这个窗口放更多的控件,下面是我写的一段代码,但是控件总不能置前private void treeParamConfigure_AfterSelect(object sender, TreeViewEventArgs e)
{
WebSoftwareControl webSoftwareControl = WebSoftwareControl.GetInstance();
WebSoftwareDetailControl webSoftwareDetailControl = WebSoftwareDetailControl.GetInstance();
switch (Convert.ToString(treeParamConfigure.SelectedNode.Text))
{
case "项目概况":
webSoftwareDetailControl.Visible = false;
webSoftwareControl.BringToFront();
webSoftwareControl.Visible = true;
webSoftwareControl.Show();
break;
case "详细配置":
webSoftwareControl.Visible = false;
webSoftwareDetailControl.BringToFront();
webSoftwareDetailControl.Visible = true;
webSoftwareDetailControl.Show();
break;
default:
break; }
我也不知道是什么问题,调试了一下是能通过的,能进到这两个case里来,而且visible的值也是对的,但就是执行的时候不能置前显示
而且还有个问题是感觉用bringtofront和利用visible也不是最好的,因为我以后还要往这个窗体里加更多的控件,如果这样的话,来一个控件我就要在每一个case里面把其他的visible置为false,这样代码就太臃肿了,容易出错,大家有没有好的办法啊?在此谢过了~~
{
WebSoftwareControl webSoftwareControl = WebSoftwareControl.GetInstance();
WebSoftwareDetailControl webSoftwareDetailControl = WebSoftwareDetailControl.GetInstance();
switch (Convert.ToString(treeParamConfigure.SelectedNode.Text))
{
case "项目概况":
webSoftwareDetailControl.Visible = false;
webSoftwareControl.BringToFront();
webSoftwareControl.Visible = true;
webSoftwareControl.Show();
break;
case "详细配置":
webSoftwareControl.Visible = false;
webSoftwareDetailControl.BringToFront();
webSoftwareDetailControl.Visible = true;
webSoftwareDetailControl.Show();
break;
default:
break; }
我也不知道是什么问题,调试了一下是能通过的,能进到这两个case里来,而且visible的值也是对的,但就是执行的时候不能置前显示
而且还有个问题是感觉用bringtofront和利用visible也不是最好的,因为我以后还要往这个窗体里加更多的控件,如果这样的话,来一个控件我就要在每一个case里面把其他的visible置为false,这样代码就太臃肿了,容易出错,大家有没有好的办法啊?在此谢过了~~
-------------------------------------
//把控件放到一个hashtable里面
Hashtable table = new Hashtable();
table.add("项目概况",WebSoftwareControl.GetInstance());
table.add("详细配置", WebSoftwareDetailControl.GetInstance());
... 如果再有其它的同样的table.add去添加。//全部先隐藏
foreach(WebSoftwareControl control in table.Values)
{
control.Visible = false;
}//显示你TreeView中选中的
((WebSoftwareControl)table[treeParamConfigure.SelectedNode.Text]).Visible = true;
((WebSoftwareControl)table[treeParamConfigure.SelectedNode.Text]).BringToFront();----------------------------
这样每次你有新的控件,只需要在Hashtable中去添加,其它代码不用改。
注意上面的代码我是就在这里敲的,应该不能直接通过编译,你自己回去改一下。
这样在代码中直接切换tab方便,每次显示一个tab,对当前的进行操作不影响其它的tab.即使你用Hashtable,还是要做个全部先隐藏,多做了一些无用动作.
你要觉得不专业就用上面的Hashtable