求教Winform使用TreeView记录已打开窗体名称的问题

mailbao 2010-04-24 06:43:55
Winform项目
使用spContainer窗口分左右两侧区域
左侧为TreeView
右侧为窗体显示区域

每点击一下TreeView节点名称就会在右侧的spContainer.pannel2中加载对应的窗体Form。 如果已打开过的窗体,没有关闭自己都会一直存在,只是当点击下一次节点时spContainer.pannel2将会清空内容,加载另一个Form.......

情况就是这样,我想将那些已打开过而且还没有关闭的窗体记录在一个toolstripMenu中显示出来,方便user查看或还返打开窗体。


不知有什么好的方法实现这种想法?

先谢谢楼下各位的支持与帮助啦!
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolcoffee4051982 2010-04-25
  • 打赏
  • 举报
回复
学习了。。。。
mailbao 2010-04-25
  • 打赏
  • 举报
回复
To: 1楼大哥

你的方法是可以获取系统所有已打开的窗体,
但和我实际的需求还是有出入。

因为我左侧是动态生成的 treeView,这个treeView中的节点各自命名不一样,
我是要让这个节点名称代替frm.Text
这是考虑到有些Form中运用了tabpage控件来控制不同模块的内容。

简单来说,如果某个form里面是有一个tabControl包含几个tabpage来分别显示不同模块内容的时候,
点击treeView的节点时打开的是那个form,但我是将其它不相关的tabpage删除不显示的,
其实也就是说一个节点实际上是对应某个form的其中一个tabpage内容

eg: 一个窗体frmUser 会有个tabControl,其中包括几个tabpage,如tbpUser,tbpRole,tbpPrivilege....等等.
而在TreeView里,
先private frmUser UserForm = null;
private frmUser RoleForm = null;
private frmUser PrivilegeForm = null;
UserForm 对应tbpUser
RoleForm 对应tbpRole
PrivilegeForm 对应tbpPrivilege

因此,我点击treeView上的RoleForm节点名称将会打开frmUser窗体,只显示tbpRole模块内容,toolStripMenuItem1要记录这个已打开窗体的信息也应该类似如下
toolStripMenuItem1.DropDownItems.Add("RoleForm", null, RoleForm.show());


mailbao 2010-04-25
  • 打赏
  • 举报
回复
我的问题已完全解决啦,谢谢1楼大哥的指点!
足球中国 2010-04-24
  • 打赏
  • 举报
回复
frm.show也可以带到当前。
lzsh0622 2010-04-24
  • 打赏
  • 举报
回复
private void toolStripMenuItem1_DropDownOpening(object sender, EventArgs e)
{
toolStripMenuItem1.DropDownItems.Clear(); //清除所有项

foreach (Form frm in Application.OpenForms)
{
if (frm.Visible && frm != this) // 显示除主窗口之外的可视窗口
{
if (frm != this.ActiveMdiChild) toolStripMenuItem1.DropDownItems.Add(frm.Text, null, selectMdichild);
}
}
}

// 选择当前窗口
private void selectMdichild(object sender, EventArgs e)
{
foreach (Form frm in Application.OpenForms)
{
if (frm.Text == sender.ToString())
{
frm.WindowState = FormWindowState.Maximized;
frm.BringToFront();
break;
}
}
}

111,125

社区成员

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

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

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