关于WINFORM的问题

voodooq 2004-03-18 08:12:12
请问,如何做可以是的不同的winfrom显示在一个主FROM中,比如一个窗体,我左边是一个TREEVIEW的菜单,通过选择不同的节点,选择不同的窗体,我现在想让对应的窗体在右边显示出来,而左边不变,这种效果如何实现?


多谢

请给出思路或者实例 多谢

100分相送
...全文
72 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
turnmissile 2004-03-19
  • 打赏
  • 举报
回复
这个应该是比较通用的模式了八

建立一个显示子窗口
一个treeview,
然后override 这个treeview的onitemchanged事件,在里面把对应的数据显示在那个子窗口中。
voodooq 2004-03-18
  • 打赏
  • 举报
回复
hao 的多谢大家
智商无下限 2004-03-18
  • 打赏
  • 举报
回复
创建子窗体
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbtskcreatingmdichildforms.htm

创建 MDI 子窗体请参见
多文档界面 (MDI) 应用程序 | 创建 MDI 父窗体 | 确定活动的 MDI 子窗口 | 将数据发送到活动的 MDI 子窗口 | 排列 MDI 子窗体
多文档界面 (MDI) 应用程序的基本元素是 MDI 子窗体,因为它们是用户交互的中心。

在下面的过程中,将创建显示 RichTextBox 控件的 MDI 子窗体,该子窗体类似于大多数字处理应用程序。将 RichTextBox 控件替换为其他控件(如 DataGrid 控件或混合控件)使您得以创建各种可能的 MDI 子窗口(而且进一步扩展为 MDI 应用程序)。

创建 MDI 子窗体

创建菜单结构中包含顶级菜单项“文件”和“窗口”及菜单项“新建”和“关闭”的 MDI 父窗体。有关创建 MDI 父窗体的更多信息,请参见创建 MDI 父窗体。
在“属性”窗口顶部的下拉列表中,选择与“窗口(&W)”菜单项对应的菜单项,然后将 MdiList 属性设置为 true。
这将使“窗口”菜单能够维护打开的 MDI 子窗口的列表(活动子窗口旁有一个复选标记)。

在解决方案资源管理器中,右击项目,指向“添加”,然后选择“添加新项”。
此窗体将作为 MDI 子窗体的模板。

注意 在此步骤中创建的 MDI 子窗体是标准的 Windows 窗体。因此,它具有 Opacity 属性,该属性允许控制窗体的透明度。但是,Opacity 属性用于顶级窗口。不要将其与 MDI 子窗体同时使用,否则可能会引起绘制问题。
在“添加新项”对话框中,从“模板”窗格中选择“Windows 窗体”(在 Visual Basic 或 Visual C# 中)或“Windows 窗体应用程序 (.NET)”(在 Visual C++ 中)。在“名称”框中,命名窗体 Form2。单击“打开”按钮将该窗体添加到项目中。
Windows 窗体设计器打开,其中显示 Form2。

将 RichTextBox 控件从“工具箱”拖到窗体上。
在“属性”窗口中,将 Anchor 属性设置为“Top, Left”,并将 Dock 属性设置为“Fill”。
这导致即使调整 MDI 子窗体的大小,RichTextBox 控件也会完全填充该窗体的区域。

为“新建”菜单项创建 Click 事件处理程序。有关创建事件处理程序的更多信息,请参见在 Windows 窗体设计器上创建事件处理程序。
插入类似于以下代码的代码,以便在用户单击“新建”菜单项时创建新的 MDI 子窗体(在下面的示例中,事件处理程序处理 MenuItem2 的 Click 事件。请注意,您的“新建”菜单项可能不是 MenuItem2,这取决于应用程序结构的具体情况。)。
' Visual Basic
Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
Dim NewMDIChild As New Form2()
'Set the Parent Form of the Child window.
NewMDIChild.MdiParent = Me
'Display the new form.
NewMDIChild.Show()
End Sub

// C#
protected void MDIChildNew_Click(object sender, System.EventArgs e){
Form2 newMDIChild = new Form2();
// Set the Parent Form of the Child window.
newMDIChild.MdiParent = this;
// Display the new form.
newMDIChild.Show();
}

// C++
private:
System::Void menuItem2_Click(System::Object * sender,
System::EventArgs * e)
{
Form2 *newMDIChild = new Form2();
// Set the Parent Form of the Child window.
newMDIChild->MdiParent = this;
// Display the new form.
newMDIChild->Show();
}
在 Visual C++ 中,在 Form1.h 的上面添加以下 #include 指令:

// C++
#include "Form2.h"
按 F5 键运行该应用程序。请注意,通过从“文件”菜单中选择“新建”,可创建新的 MDI 子窗体。该子窗体在“窗口”菜单中被跟踪。
注意 请注意,如果 MDI 子窗体有一个 MainMenu 组件(其菜单结构通常为包含菜单项的菜单结构),并且该子窗体是在一个拥有 MainMenu 组件(其菜单结构通常为包含菜单项的菜单结构)的 MDI 父窗体中打开的,那么在设置了 MergeType 属性(作为可选项,还可以设置 MergeOrder 属性)之后,这两个菜单项会自动合并。请将两个 MainMenu 组件以及该子窗体的所有菜单项的 MergeType 属性都设置为 MergeItems。另外,设置 MergeOrder 属性,以便这两个菜单的菜单项按所需顺序显示。有关使用 MergeOrder 属性确定菜单项位置的更多信息,请参见以编程方式合并菜单项。
注意 切记,关闭 MDI 父窗体时,每个 MDI 子窗体先引发一个 Closing 事件,再引发 MDI 父窗体的 Closing 事件。但是,取消 MDI 子窗体的 Closing 事件不会妨碍引发 MDI 父窗体的 Closing 事件,因为 MDI 父窗体的 Closing 事件的 CancelEventArgs 参数现在会设置为 true。通过将 CancelEventArgs 参数设置为 false 可以强制 MDI 父窗体和所有 MDI 子窗体关闭。
请参见
多文档界面 (MDI) 应用程序 | 创建 MDI 父窗体 | 确定活动的 MDI 子窗口 | 将数据发送到活动的 MDI 子窗口 | 排列 MDI 子窗体



--------------------------------------------------------------------------------

向 Microsoft 发送有关此主题的反馈

© Microsoft Corporation。保留所有权利。
智商无下限 2004-03-18
  • 打赏
  • 举报
回复
delphi 中可以这么写
Form2 test = new Form2();
test.Parent = this.panel1;
test.Show();
michaelowenii 2004-03-18
  • 打赏
  • 举报
回复
LiSDN(Lockon) 的思路是不错的,你可以是下。
我这里友情提示一下:你要注意每个窗体的事例化,因为你的窗体比较多。
showtimenow 2004-03-18
  • 打赏
  • 举报
回复
没明白什么意思
LiSDN 2004-03-18
  • 打赏
  • 举报
回复
建立一个MDI主窗体,托一个treeview控件到MDI窗体上,设置dock属性为Left
private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
Form frm=null;
switch(e.Node.Text)
{
case "Node0":
frm=new Form2();
break;
case "Node1":
frm=new Form3();
break;
}
if(frm!=null)
{
frm.MdiParent=this;
frm.Show();
}
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧