日期:2014-05-20 浏览次数:22292 次
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node.Name == "节点0") { SettingForm1 stfrm1 = new SettingForm1(); stfrm1.TopLevel = false; stfrm1.FormBorderStyle = FormBorderStyle.None; stfrm1.WindowState = FormWindowState.Maximized; panel1.Controls.Add(stfrm1); stfrm1.Show(); } }
------解决方案--------------------
我做过,就用panel,所有的窗口都在panel中切换
Form1 form1 = new Form1 form1.TopLevel = false; panel1.Controls.Add(form1); form1.Show();
------解决方案--------------------
跟TreeView放在哪里没有关系的,关键是你不能用splitContainer1.Panel2.Controls.Add(stfrm1);
必须在splitContainer1.Panel2上放一个独立的Panel才行!
splitContainer1.Panel2的类型是:SplitterPanel不是Panel!
------解决方案--------------------
为什么每个界面都要用Form弹出呢,只用一个Form不行吗?
Form的左边是TreeView,右边是Panel,而把每个界面定义一个UserControl,TreeView节点点击之后,动态设置UserControl到Panel不就完了。弹那么多Form用户体验很差的,所有的东西在一个Form当中搞定。
------解决方案--------------------
我的意思是你不要在Panel里面加载form,而是加载一个userControl,将form当中的逻辑移动到userControl当中。将一个form加到一个penel当中,这不符合微软的设计规范。
------解决方案--------------------
用webBrowser.Navigate(url);
url是你treeview被选中节点的属性值
TreeNode tn = this.treeView1.SelectedNode;
string url = "";
if (tn.Tag != null)
{
url = tn.Tag.ToString();
webBrowser1.Navigate(url);
}
Tag存储url
------解决方案--------------------
不知道我做的是不是你想要的,比较粗糙,欢迎拍砖。
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
class MainForm:Form
{
private TreeView treeView1;
private Panel panel1;
public MainForm()
{
this.InitializeComponent();
LoginInDialog login = new LoginInDialog();
this.treeView1.Nodes[0].Tag = login;
WelcomeDialog welcome = new WelcomeDialog();
this.treeView1.Nodes[1].Tag = welcome;
}
private void InitializeComponent()
{