CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

MDI窗体的问题,在CSDN一个多月了没人能解决,再解决不了我就没饭吃了,好惨啊。。。

楼主chcky(成浩)2006-05-27 18:06:11 在 .NET技术 / VB.NET 提问

MDI窗体的左边有一个树形,然后MDI有很多子窗体,我希望移动的子窗体能浮在树形的上方,而不是默认的子窗体会被树形盖住。  
   
  客户要求一定要这么做,没办法,今天等到天亮也要等,明天早上要验收这一块了。  
   
  大家请帮帮忙。 问题点数:40、回复次数:44Top

1 楼copico(北北)回复于 2006-05-27 18:15:34 得分 5

兄弟,同情你,真的帮不了你,我唯一能帮你的就是帮你顶Top

2 楼boblaile(爱在13月32)回复于 2006-05-27 18:32:34 得分 2

兄弟,我帮你baidu了一下  
  后来有google   了一下  
  ................  
  Top

3 楼amandag(高歌)回复于 2006-05-27 18:39:06 得分 1

关注,帮顶Top

4 楼kssys()回复于 2006-05-27 18:44:55 得分 1

换条灵活的:树形会自动隐藏~Top

5 楼zhqs1000(子鱼)回复于 2006-05-27 18:51:53 得分 1

顶到解决为止Top

6 楼chcky(成浩)回复于 2006-05-27 19:03:11 得分 0

谢谢各位热心的兄弟们,我向你们致敬了!  
  有办法可以解决吗,能实现这样的效果也行,再搞不出来,就真的要死得很难看了!   
  Top

7 楼copico(北北)回复于 2006-05-27 20:11:54 得分 0

没事,兄弟,帮你搞定了  
  一会告诉你Top

8 楼amandag(高歌)回复于 2006-05-27 20:17:55 得分 0

o,不知道楼上怎么解决的Top

9 楼chcky(成浩)回复于 2006-05-27 20:47:41 得分 0

非常感谢copico(一路向北)兄弟  
   
  他得到的效果跟我想要的还是有点差距,继续求解!  
   
  我的QQ:38676160  
  MSN:chengkaiyu2008@hotmail.com  
   
  Top

10 楼laidon(走进.NET,开创新生活)回复于 2006-05-27 20:51:22 得分 3

我怎么看不大懂楼主的意思啊?"浮在树形的上方"是什么意思?树形又指的是什么?Top

11 楼chcky(成浩)回复于 2006-05-27 21:17:43 得分 0

树形就是treeview,浮在树形的上方就是treeview不要盖住子窗体。Top

12 楼jbczj(人见人爱)回复于 2006-05-27 21:22:13 得分 2

上面放个panel,然后上面放树Top

13 楼laidon(走进.NET,开创新生活)回复于 2006-05-27 21:23:11 得分 0

通过判断子窗体和treeview的位置关系处理不了吗Top

14 楼chcky(成浩)回复于 2006-05-27 21:46:27 得分 0

上面放个panel,然后上面放树  
  这样不行的  
   
  通过判断子窗体和treeview的位置关系处理不了吗  
  这个我真的不知道怎么弄了,请教!Top

15 楼pslh(pslh)回复于 2006-05-28 01:25:07 得分 2

估计不可能做到,  
  System.Windows.Forms.MdiClient和你所说的树形同属mdi窗体中的控件,子窗体又在System.Windows.Forms.MdiClient中,要么树形盖住子窗体,要么树形完全不可见。  
  不过你可以在这两种状态之间来回切换,但那样太不美了。Top

16 楼chcky(成浩)回复于 2006-05-28 01:39:26 得分 0

怎么,还没人来帮我解决吗?  
  版主呢?Top

17 楼pslh(pslh)回复于 2006-05-28 01:47:50 得分 0

没办法的,除非你能把“树形”放到System.Windows.Forms.MdiClient中去!Top

18 楼chcky(成浩)回复于 2006-05-28 01:52:27 得分 0

没办法的,除非你能把“树形”放到System.Windows.Forms.MdiClient中去!  
   
  你所说的是放在MDI窗体客户区吗?  
  可以放在那里啊,但有什么用呢Top

19 楼pslh(pslh)回复于 2006-05-28 02:04:34 得分 1

System.Windows.Forms.MdiClient中只能添加子窗体的!  
   
  不过也不是绝对没办法,可以用非常规的办法把control添加到System.Windows.Forms.MdiClient中去。记得有一次,在vb.net2003中,我就把一个control添加到菜单中去了,可惜时间长了,忘记了,但好象与NativeWindow有关。Top

20 楼chcky(成浩)回复于 2006-05-28 03:16:04 得分 0

继续等,一直等到天亮!Top

21 楼chcky(成浩)回复于 2006-05-28 06:16:41 得分 0

自己顶!Top

22 楼sunhui(TangramTeamLeader)回复于 2006-05-28 07:41:30 得分 6

你在北京吗?如果在北京,你可以与我联系,可以解决你的问题Top

23 楼sunhui(TangramTeamLeader)回复于 2006-05-28 07:43:18 得分 0

我的联系方式:sunhuizlz@hotmail.com,通过msn即可Top

24 楼nnhy(大石头http://www.nnhy.org QQ群10193406)回复于 2006-05-28 09:12:42 得分 1

哈哈,变一个做法试试,激活的一个子窗体移动到TreeView附近的时候,让TreeView暂时消失,移走了MDI再显示出来Top

25 楼dadi0189(冰雨)回复于 2006-05-28 10:32:47 得分 1

这样的窗体如果在VB中很容易实现,在.NET原理也应差不多吧,都是微软的东西.  
  如果要参考VB代码,把你的邮箱号以短信息形式发给我.Top

26 楼chcky(成浩)回复于 2006-05-28 10:44:35 得分 0

谢谢各位,感动得流泪了,谢谢你们!Top

27 楼ZJQ100()回复于 2006-05-28 10:46:59 得分 1

好像不如VB的灵活Top

28 楼lyjun_311(心中有剑)回复于 2006-05-28 11:15:34 得分 1

haha没有用过Top

29 楼laidon(走进.NET,开创新生活)回复于 2006-05-28 11:42:49 得分 0

关注楼主  
  试了好多方法都不行,如果实在不行楼主可以考虑用个不是子窗体的form啊,自己控制一下窗体不让它到mdi窗体的外面,再加上点其它处理,应该很像子窗体的  
  不然就判断窗体和treeview的位置关系,让窗体移动不到treeview所在位置Top

30 楼chcky(成浩)回复于 2006-05-28 11:53:02 得分 0

关注楼主  
  试了好多方法都不行,如果实在不行楼主可以考虑用个不是子窗体的form啊,自己控制一下窗体不让它到mdi窗体的外面,再加上点其它处理,应该很像子窗体的  
  不然就判断窗体和treeview的位置关系,让窗体移动不到treeview所在位置  
   
  因为子窗体比较多,这样很难控制,况且作出来也肯定不美观Top

31 楼shak_lp(侠客)回复于 2006-05-28 13:15:51 得分 1

帮顶Top

32 楼byst()回复于 2006-05-28 15:08:07 得分 1

没有思路  
  帮你顶吧  
  等我有了想法再告诉你  
  或者你有了想法再开贴告诉大家Top

33 楼liumj2001(蛊惑罗密欧)回复于 2006-05-28 15:37:19 得分 1

我我记得我是在个PICTURE   BOX放控件的,可以做到这种效果。Top

34 楼ggw128()回复于 2006-05-28 16:57:30 得分 1

有個辦法,把treeview控件放在一個特殊的子窗體,而這個特殊窗體是不能被關閉的,在打開別的子窗體時這個特殊的窗體就自然地處於最底層,也可以通過一個命令把它叫出來。我的ERP系統就是這樣處理的。  
  我的MSN是ggw128@hotmail.com     QQ是69896811Top

35 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-05-28 20:50:01 得分 1

to   lz:  
   
        so   sorry~~   你的message现在才看到~  
   
        大概已经解决了吧?   没有遇到过类似的需求,如果有人已经解决了,偶就不试了~Top

36 楼sgfgh(靛青の羽)回复于 2006-05-28 22:04:51 得分 4

using   System;  
  using   System.Drawing;  
  using   System.Windows.Forms;  
  namespace   WindowsApplication18  
  {  
  public   class   Form6   :   System.Windows.Forms.Form  
  {  
  private   System.ComponentModel.Container   components   =   null;  
  System.Windows.Forms.TreeView   tv;  
  Form7   f   ;  
   
  bool   b;  
   
  public   Form6()  
  {  
  InitializeComponent();  
  }  
  protected   override   void   Dispose(   bool   disposing   )  
  {  
  if(   disposing   )  
  {  
  if(components   !=   null)  
  {  
  components.Dispose();  
  }  
  }  
  base.Dispose(   disposing   );  
  }  
  private   void   InitializeComponent()  
  {  
  this.AutoScaleBaseSize   =   new   System.Drawing.Size(6,   14);  
  this.ClientSize   =   new   System.Drawing.Size(512,   410);  
  this.IsMdiContainer   =   true;  
  this.Name   =   "Form6";  
  this.Text   =   "Form6";  
  this.Resize   +=   new   System.EventHandler(this.Form6_Resize);  
  this.Load   +=   new   System.EventHandler(this.Form6_Load);  
   
  }  
  private   void   Form6_Load(object   sender,   System.EventArgs   e)  
  {  
  f   =   new   Form7();  
  f.Location   =   new   Point(0,0);  
  f.Width   =   150;  
  f.Height   =   this.Height-35;  
  f.MdiParent     =   this;  
  f.Show();  
  Form7   ff   =   new   Form7();  
  ff.FormBorderStyle   =   FormBorderStyle.Sizable;  
  ff.treeView1.Visible   =   false;  
  ff.MdiParent   =   this;  
                          ff.Show();  
                          ff.Resize   +=new   EventHandler(ff_Resize);  
  }  
  private   void   Form6_Resize(object   sender,   System.EventArgs   e)  
  {  
                          f.Height   =   this.Height-35;  
  }  
   
  private   void   ff_Resize(object   sender,   EventArgs   e)  
  {  
  if(((Form7)sender).WindowState   ==   FormWindowState.Maximized   &&   b   ==   false)  
  {  
  b=   true;  
  this.tv   =   f.treeView1;  
  tv.Dock   =   DockStyle.Left;  
  tv.Width   =   150;  
                                  tv.Height   =   this.Height-35;  
  this.Controls.Add(tv);  
  }  
  else   if(b==true)  
  {  
  f.treeView1   =   tv;  
  f.Controls.Add(f.treeView1);  
  f.treeView1.Dock   =   DockStyle.Fill;  
  tv=null;  
  b=false;  
  }  
  }  
  }  
  public   class   Form7   :   System.Windows.Forms.Form  
  {  
  public   System.Windows.Forms.TreeView   treeView1;  
  private   System.ComponentModel.Container   components   =   null;  
   
  public   Form7()  
  {  
  InitializeComponent();  
  }  
  protected   override   void   Dispose(   bool   disposing   )  
  {  
  if(   disposing   )  
  {  
  if(components   !=   null)  
  {  
  components.Dispose();  
  }  
  }  
  base.Dispose(   disposing   );  
  }  
  private   void   InitializeComponent()  
  {  
  this.treeView1   =   new   System.Windows.Forms.TreeView();  
  this.SuspendLayout();  
  this.treeView1.Dock   =   System.Windows.Forms.DockStyle.Fill;  
  this.treeView1.ImageIndex   =   -1;  
  this.treeView1.Location   =   new   System.Drawing.Point(0,   0);  
  this.treeView1.Name   =   "treeView1";  
  this.treeView1.SelectedImageIndex   =   -1;  
  this.treeView1.Size   =   new   System.Drawing.Size(292,   270);  
  this.treeView1.TabIndex   =   0;  
  this.AutoScaleBaseSize   =   new   System.Drawing.Size(6,   14);  
  this.ClientSize   =   new   System.Drawing.Size(292,   270);  
  this.Controls.Add(this.treeView1);  
  this.FormBorderStyle   =   System.Windows.Forms.FormBorderStyle.None;  
  this.Name   =   "Form7";  
  this.Text   =   "Form7";  
  this.ResumeLayout(false);  
  }  
  }  
  }  
  Top

37 楼sgfgh(靛青の羽)回复于 2006-05-28 22:11:25 得分 0

糟糕  
  上面把Main给忘了,  
   
  加个吧  
   
   
  namespace   WindowsApplication18  
  {  
  class   class1  
  {  
  static   void   Main()    
  {  
  Application.Run(new   Form6());  
  }  
  }  
  }Top

38 楼sgfgh(靛青の羽)回复于 2006-05-28 23:13:34 得分 0

之前的还有点小bug   ,又改了一点儿  
   
  using   System;  
  using   System.Drawing;  
  using   System.Windows.Forms;  
  namespace   WindowsApplication18  
  {  
  public   class   Form6   :   System.Windows.Forms.Form  
  {  
  private   System.ComponentModel.Container   components   =   null;  
  System.Windows.Forms.TreeView   tv;  
  Form7   f   ;  
  bool   b;  
  public   Form6()  
  {  
  InitializeComponent();  
  }  
  protected   override   void   Dispose(   bool   disposing   )  
  {  
  if(   disposing   )  
  {  
  if(components   !=   null)  
  {  
  components.Dispose();  
  }  
  }  
  base.Dispose(   disposing   );  
  }  
  static   void   Main()    
  {  
  Application.Run(new   Form6());  
  }  
  private   void   InitializeComponent()  
  {  
  this.AutoScaleBaseSize   =   new   System.Drawing.Size(6,   14);  
  this.ClientSize   =   new   System.Drawing.Size(512,   410);  
  this.IsMdiContainer   =   true;  
  this.Name   =   "Form6";  
  this.Text   =   "Form6";  
  this.Resize   +=   new   System.EventHandler(this.Form6_Resize);  
  this.Load   +=   new   System.EventHandler(this.Form6_Load);  
  }  
  private   void   Form6_Load(object   sender,   System.EventArgs   e)  
  {  
  f   =   new   Form7();  
  f.Location   =   new   Point(0,0);  
  f.Width   =   150;  
  f.Height   =   this.Height-35;  
  f.MdiParent     =   this;  
  f.Show();  
  Form7   ff   =   new   Form7();  
  ff.FormBorderStyle   =   FormBorderStyle.Sizable;  
  ff.treeView1.Visible   =   false;  
  ff.MdiParent   =   this;  
  ff.Show();  
  ff.Resize   +=new   EventHandler(ff_Resize);  
  ff.WindowState   =   FormWindowState.Maximized;  
  ff.WindowState   =   FormWindowState.Normal;  
  }  
  private   void   Form6_Resize(object   sender,   System.EventArgs   e)  
  {  
  f.Height   =   this.Height-35;  
  }  
  private   void   ff_Resize(object   sender,   EventArgs   e)  
  {  
  if(((Form7)sender).WindowState   ==   FormWindowState.Maximized   &&   b   ==   false)  
  {  
  b=   true;  
  this.tv   =   f.treeView1;  
  tv.Dock   =   DockStyle.Left;  
  tv.Width   =   150;  
  tv.Height   =   this.Height-35;  
  this.Controls.Add(tv);  
  }  
  else   if(b==true   &&   ((Form7)sender).WindowState   !=   FormWindowState.Maximized   )  
  {  
  f.treeView1   =   tv;  
  f.Controls.Add(f.treeView1);  
  f.treeView1.Dock   =   DockStyle.Fill;  
  tv=null;  
  b=false;  
  }  
  }  
  }  
  public   class   Form7   :   System.Windows.Forms.Form  
  {  
  public   System.Windows.Forms.TreeView   treeView1;  
  private   System.ComponentModel.Container   components   =   null;  
   
  public   Form7()  
  {  
  InitializeComponent();  
  }  
  protected   override   void   Dispose(   bool   disposing   )  
  {  
  if(   disposing   )  
  {  
  if(components   !=   null)  
  {  
  components.Dispose();  
  }  
  }  
  base.Dispose(   disposing   );  
  }  
  private   void   InitializeComponent()  
  {  
  this.treeView1   =   new   System.Windows.Forms.TreeView();  
  this.SuspendLayout();  
  this.treeView1.Dock   =   System.Windows.Forms.DockStyle.Fill;  
  this.treeView1.ImageIndex   =   -1;  
  this.treeView1.Location   =   new   System.Drawing.Point(0,   0);  
  this.treeView1.Name   =   "treeView1";  
  this.treeView1.SelectedImageIndex   =   -1;  
  this.treeView1.Size   =   new   System.Drawing.Size(292,   270);  
  this.treeView1.TabIndex   =   0;  
  this.AutoScaleBaseSize   =   new   System.Drawing.Size(6,   14);  
  this.ClientSize   =   new   System.Drawing.Size(292,   270);  
  this.Controls.Add(this.treeView1);  
  this.FormBorderStyle   =   System.Windows.Forms.FormBorderStyle.None;  
  this.Name   =   "Form7";  
  this.Text   =   "Form7";  
  this.ResumeLayout(false);  
  }  
  }  
  }  
  Top

39 楼pslh(pslh)回复于 2006-05-28 23:48:00 得分 0

总不能要求每个子窗体都带上一个TreeView吧Top

40 楼sgfgh(靛青の羽)回复于 2006-05-29 00:00:07 得分 1

当然不用阿Top

41 楼wzpwork(东方红叶)回复于 2006-05-29 00:29:59 得分 1

兄弟,同情你,帮你顶。Top

42 楼jdsbjcailei(基度山伯爵)回复于 2006-05-29 08:08:00 得分 1

 
  哈哈,变一个做法试试,激活的一个子窗体移动到TreeView附近的时候,让TreeView暂时消失,移走了MDI再显示出来  
   
  这个笨方法不行吗?Top

43 楼chcky(成浩)回复于 2006-05-29 10:51:23 得分 0

我是楼主,非常感谢各位热情的兄弟!真的谢谢你们!  
   
  特别感谢copico(一路向北),你帮我试了很多方法,虽然最终没能完全得到我想要的,但我特别的感谢,你的热情,你的真诚,使我深受感动。  
   
  特别感谢sgfgh(靛青の羽),因为我的问题已经解决了,也就没试你的方法  
   
  更特别感谢sunhui(MFC.NET),是你完全解决了我的心头之患,更因为你的热情和助人为乐的精神,使我感觉到CSDN的温暖!  
   
  关于如何实现此功能,sunhui(MFC.NET)孙辉将不久会在他的blog里公布,大家注意在CSDN主页上关注他的blog!  
   
  再次感谢你们,所有为我付出的兄弟们!Top

44 楼kristen(肥头大肚)回复于 2007-01-06 15:48:45 得分 0

加一工具按钮或菜单,能进行显示/隐藏切换Top

相关问题

关键词

得分解答快速导航

  • 帖主:chcky
  • copico
  • boblaile
  • amandag
  • kssys
  • zhqs1000
  • laidon
  • jbczj
  • pslh
  • pslh
  • sunhui
  • nnhy
  • dadi0189
  • ZJQ100
  • lyjun_311
  • shak_lp
  • byst
  • liumj2001
  • ggw128
  • Eddie005
  • sgfgh
  • sgfgh
  • wzpwork
  • jdsbjcailei

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo