当一个窗体的toplevel=false后,该窗体的标题栏变为灰色,虽然能操作窗体,但标题栏为灰色感觉不象是被激活?
怎么解决呢?
出现这个问题的起因是这样的:
mid窗体中的一个panel控件中一个子控件窗体a。因为只有把窗体a的toplevel设为false,才能在panel里存活。

解决方案 »

  1.   

    应该是焦点的问题!因为MDI父窗体已经为Activated.
    唯一的办法就是把窗体A的标题栏隐掉:a.FormBorderStyle = FormBorderStyle.None;
      

  2.   

    如果你要这样,为什么不使用Mdi类型的窗体呢?
      

  3.   

    就如1楼所说: a.FormBorderStyle = FormBorderStyle.None;再处理a.Activated与a.Deactivate事件, 最后用贴图法根据不同的事件显示相应的图片... 补充一句, 为什么不直接使用Mdi窗体呢?
      

  4.   

    他大概想做成Tabbed MDI.
    这种实现方法不太理想!你肯定要隐藏标题栏.最好用UserControl形式添加到Panel.
      

  5.   

    to shinaterry ,hbxtlhx :
       我的项目里已经有了一个MDI了。还能再用一个mdi?
    to 3tzjq :
       最好用UserControl形式添加到Panel.?这句话什么意思?代码怎么写?
      

  6.   

    将窗口A从System.Windows.Forms.Form继承,直接改为System.Windows.Forms.UserControl.完成从窗口向用户控件的转换.如果一定要用窗口,那么,窗口样式FormBorderStyle改为FormBorderStyle.None.然后自己加一个标题栏(使用图片或者Panel变更样式)在Panel的顶部.可以使用鼠标移动或者激活时,更改图片或者Panel的颜色来完成显示激活样式.
      

  7.   

    我的项目是winform的,usercontrol好象是用在asp.net里的吧?
      

  8.   

    又查了一下,usercontrol好象也可以用在winform中,有没有代码?
      

  9.   

    WinForm中的UserControl与Form是一样的,都是从FormBase继承过来的.你Form里面有什么,UserControl里面就有什么.代码基本一样.只用将class定义语句:后面的Form改为UserControl即可.
      

  10.   

    用usercontrol加入控件,若是窗体控件的话也必要要把toplevel设为false,这样窗体的标题栏同样是灰色的。
      

  11.   

    没有这个必要吧?楼主不放心可以先将自己原来的Form的代码文件复制出来。然后将它的两个cs文件中的Form改为UserControl试一下就应该可以了。^.^相信自己。
      

  12.   

    不太明白楼上的两个cs文件中的form改为usercontrol?咋整啊?
      

  13.   

    如果程序里已使用了Mdi类型的主窗体,那:
    “mid窗体中的一个panel控件中一个子控件窗体a。”是怎么回事呢?为什么会有这样的窗体?觉得,你可以使用普通的Control或UsrControl来代替Form,如果使用Form也不必带着它的标题栏,而应该去掉。不去掉觉得有点“不论不类”。