关于dockPanel控件的一些问题 我使用了dockPanel1控件,但是我现在想实现点击tree其中的一个节点,如何在右侧显示自己要想要的串口 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个方法应该很多吧,例如你在创建TreeView时候就可以对TreeNode的Tag赋值,用于标记不同的窗体引用,然后用TreeView的Click事件就可以做到了。 你是开发CS架构的程序吧?你最好把dockPanel控件的功能封装到用户控件里。再单击左侧树节点的时候,根据不同节点显示不同的用户控件。这样做可以减少主窗体的代码量。维护起来会相对容易很多。 是啊,就是楼上的意思为什么这样不行 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (treeView1.SelectedNode.Name.ToString() == "节点5") { Form2 form2 = new Form2(); mainform mainform = new mainform(); form2.Show(mainform.dockPanel1); form2.ShowHint = DockState.Document; } } 求在DockPanel 的子窗体用命令打开另一子窗体使其停靠在主窗体的方法谁能帮我实现啊 DockPanel是指:WeifenLuo.WinFormsUI.Docking.dll里的那个吗?如果是,请继续看:1。首先你要在主窗体右侧显示的窗体要继承DockContent2。还有一点让我费解,你这个treeview2是在哪个窗体上? Form2 form2 = new Form2(); mainform mainform = new mainform();//这里为什么又重新创建? form2.Show(mainform.dockPanel1);//主窗体还没显示出来form2又如何显示? form2.ShowHint = DockState.Document;现在对你的具体情况不清楚。 你的主要问题出现在 mainform mainform = new mainform();//这里为什么又重新创建?这里是不能重新new一个的,不然你的子窗体会显示到你刚new的这个主窗体上,而我想你的整个应用程序来说主窗体应该只有一个,第一个子窗体也是通过主窗体打开的,所以你在第一个子窗体上想使另一个子窗体显示到同一个主窗体上的时候,你必须先拿到主窗体,你可以通过单例模式或是之前先保存主窗体引用。 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (treeView1.SelectedNode.Name.ToString() == "节点5") { Form2 form2 = new Form2(); mainform mainform = new mainform(); form2.Show(mainform.dockPanel1); form2.ShowHint = DockState.Document; } }改成private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (treeView1.SelectedNode.Name.ToString() == "节点5") { Form2 form2 = new Form2(); mainform mainfrm = (mainform)this.owner;//这里的this应该会指向treeview所在的窗体,如果确实是这样,还不行的话,那么在treeview所在窗体显示前显式设置该窗体的Owner=mainform form2.Show(mainfrm.dockPanel1); form2.ShowHint = DockState.Document; } } 谢谢楼上的,我还是在说明一下我的意思三个form,mainform ,form1,form2其中mainform中这样写,然后from1能显示,form1的位置是在dockPanel1的左侧 public void mainform_Load(object sender, EventArgs e) { Form1 form1 = new Form1(); form1.Show(dockPanel1); }然后我点击form1中的treeView1的一个节点,form2显示在dockPanel1的中间,就是这样 mainform mainfrm = (mainform)this.owner出问题了,owner没有定义 mainform mainfrm = (mainform)this.owner;//这里的this应该会指向treeview所在的窗体,如果确实是这样,还不行的话,那么在treeview所在窗体显示前显式设置该窗体的Owner=mainform这个你没做。如果真的不行。QQ:66970551我现在就写个示例给你看一下。 关于C# Socket通信服务端 "text-overflow"不是已知的属性名。 C#,textbox显示DataGridView的内容 .net中用outlook发送邮件,如何指定发件人? 必须提个有深度的问题,才有人来了 正则表达式 怎么解决用C#创建新的Excel文件??(解决定给分) 有没有类似execl里面那种表格的控件啊? datatable添加数据问题 treeview问题,求高手解答!! 求助!在什么情况下使用结构,什么情况下使用枚举 高手进!接口问题
你是开发CS架构的程序吧?
你最好把dockPanel控件的功能封装到用户控件里。
再单击左侧树节点的时候,根据不同节点显示不同的用户控件。
这样做可以减少主窗体的代码量。
维护起来会相对容易很多。
为什么这样不行
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.Name.ToString() == "节点5")
{
Form2 form2 = new Form2();
mainform mainform = new mainform();
form2.Show(mainform.dockPanel1);
form2.ShowHint = DockState.Document;
}
}
1。首先你要在主窗体右侧显示的窗体要继承DockContent
2。还有一点让我费解,你这个treeview2是在哪个窗体上?
Form2 form2 = new Form2();
mainform mainform = new mainform();//这里为什么又重新创建?
form2.Show(mainform.dockPanel1);//主窗体还没显示出来form2又如何显示?
form2.ShowHint = DockState.Document;
现在对你的具体情况不清楚。
你的主要问题出现在 mainform mainform = new mainform();//这里为什么又重新创建?
这里是不能重新new一个的,不然你的子窗体会显示到你刚new的这个主窗体上,而我想你的整个应用程序来说主窗体应该只有一个,第一个子窗体也是通过主窗体打开的,所以你在第一个子窗体上想使另一个子窗体显示到同一个主窗体上的时候,你必须先拿到主窗体,你可以通过单例模式或是之前先保存主窗体引用。
{
if (treeView1.SelectedNode.Name.ToString() == "节点5")
{
Form2 form2 = new Form2();
mainform mainform = new mainform();
form2.Show(mainform.dockPanel1);
form2.ShowHint = DockState.Document;
}
}
改成
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.Name.ToString() == "节点5")
{
Form2 form2 = new Form2();
mainform mainfrm = (mainform)this.owner;//这里的this应该会指向treeview所在的窗体,如果确实是这样,还不行的话,那么在treeview所在窗体显示前显式设置该窗体的Owner=mainform
form2.Show(mainfrm.dockPanel1);
form2.ShowHint = DockState.Document;
}
}
三个form,mainform ,form1,form2
其中mainform中这样写,然后from1能显示,form1的位置是在dockPanel1的左侧
public void mainform_Load(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.Show(dockPanel1);
}
然后我点击form1中的treeView1的一个节点,form2显示在dockPanel1的中间,就是这样
我现在就写个示例给你看一下。