请问c#怎样实现这样的窗体:整个窗体是一个空白的矩形,没有标题栏或者说是透明的标题栏,把鼠标放到上面标题栏的位置可以拖动窗体,移到右上角会出来一个“X”,可以关闭程序。

解决方案 »

  1.   

    可以把ContolBox设置成False,然后在标题栏的位置添加一个Label,右上角加一个PictureBox,至于鼠标点到那个位置的显示出来,可以用Visible属性啊
      

  2.   

    先隐藏再显示的话不是窗体会突然高出一截吗,用label替代的话就不能拖动窗体了吧,还有没有好的方法
      

  3.   

    设置窗体的formborderstyle 为 None
    在顶端放一个panel 用来做自己的标题栏
    拖动代码:
         [DllImport("user32.dll")]
          public static extern bool ReleaseCapture();
        [DllImport("user32.dll")]
          public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); //引入API在panel 的OnMouseDown事件中写:
            ReleaseCapture();
           SendMessage((IntPtr)f.Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);这样就可以随意做自己的标题栏了
      

  4.   

    SendMessage((IntPtr)f.Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0)
    请问这个函数里几个参数是什么
      

  5.   

    几个参数常量: 
                 const int WM_SYSCOMMAND = 0x0112;
                 const int SC_MOVE = 0xF010;
                 const int HTCAPTION = 0x0002;  具体消息内容请自行查找解决,很简单,相信你能行的~~
      

  6.   

    还是用GDI处理吧,把整个窗体透明了。
    然后在把你的东西画到窗体上去。
      

  7.   

    再说一句话,意思就是:
     SendMessage((IntPtr)f.Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0)
     1、(IntPtr)f.Handle表示向当前窗体发送消息
     2、WM_SYSCOMMAND消息是预定义好的一组命令消息,框架有默认的处理方式,
     3、SC_MOVE+HTCAPTION表示鼠标在标题栏上,消息是移动