就是QQ拉到屏幕的最上面 然后就自动上去了~直留下一个边缘

解决方案 »

  1.   

    鼠标移动事件吧
    检测到窗体的top<=3
    然后就把窗体的位置该到上面去
    top=top-length
    没试过,但思路肯定没错
      

  2.   

    横轴或竖轴坐标为0,改变窗口大小(既隐藏),onMouseOver就恢复大小。
      

  3.   

    给你思路,我写的一个定时关机程序就给了这个功能
    但是那个程序是VB写的
    呵呵
    原理:
    ==========
    定时器,实时捕获窗口的TOP位置的值,假如小于20的时候,吧top直接设置成0
    这样就有一种被显示器上边框吸附上去的感觉
    技巧呀,呵呵
    完了再判断鼠标是否移除了窗口,假如移除了,设置TOP的值为负数,如窗口高350,那么这个负值的绝对值一定大于350,比如-400
    这样鼠标松开用定时器慢慢叫top渐渐从0到-400
    看定时器的设置了,呵呵,做的最好有连贯性,呵呵
    我的还不错,收缩的没有腾讯的那么利索,不过效果还可以
    如果实现腾讯的漂亮收缩,最好用线程,这样动画效果就连贯了呵呵
    ========================
    希望给你有启发,呵呵,给分,我最近花完了
      

  4.   

    winform 我用的是windows7 不知道咋滴  如果标题栏 高于屏幕最上方 他自己就会被顶下来 难道是微软干的???
      

  5.   

    定义一个全局变量   iTop=0;
    MoveLeft 事件里写
    iTop=5-this.Top;
    if(this.Top==0)
    {
         this.Top=1;
    }
    else if(this.Top==1)
    {
         this.Top=iTop;
    }在鼠标进入事件里写MoveEnter
    if(this.top<)
    {
        this.top=0;
    }lz 试试这段代码  我试过了的,能实现你所说的功能!!
      

  6.   


     public partial class Form1 : Form
        {
        
            Point OldWinowPosition;//拖动前窗体位置
            Point OldMousePosition;//拖动前鼠标位置
            Point HideBeforPosition;//隐藏前窗体位置    
            Size OriginalSize;//隐藏前窗体大小
            RichTextBox CurrentRichBox;//当前页签的RichBox      
            int MarignSpan = 1;//缩进是与屏幕距离       
            int Border = 3;//缩进隐藏宽度   
            int MaxX;//屏幕最长X    
            int MaxY;//屏幕最长Y
            bool IsMouseDown;// 鼠标是否按下
            enum PadDock//缩进类型  上下左右
            {
                none = 0,//无缩进
                Left = 1,//左缩进
                Top = 2,//
                Right = 3,//
                Bottom = 4,//        };
            PadDock FormDock;     public Form1()
            {
                InitializeComponent();
                
               //初始化 
                IsMouseDown = false;
               MaxX = Screen.PrimaryScreen.WorkingArea.Right - MarignSpan;
               MaxY = Screen.PrimaryScreen.WorkingArea.Bottom - MarignSpan;
               OriginalSize = this.Size;
               FormDock = PadDock.none;
               CurrentRichBox = this.richTextBox1;
                        }
          /// <summary>
            /// 判断窗体停靠类型
            /// </summary>
            private void DealPadDock()
            {
                FormDock = PadDock.none;
              
                if (this.Location.X <= 0)
                {
                  
                    this.Location = (new Point(0, this.Location.Y));
                    FormDock = PadDock.Left;
                               }
                else if ((this.Width + this.Location.X) >= MaxX)
                {
                 
                    this.Location = (new Point(MaxX - this.Width, this.Location.Y));
                    FormDock = PadDock.Right;
               
                   
                }            if (this.Location.Y <= 0)
                {
                
                    this.Location = (new Point(this.Location.X, 0));
                    FormDock = PadDock.Top;
              
                   
                }
                else if ((this.Height + this.Location.Y) >= MaxY)
                {
                  
                    this.Location = (new Point(this.Location.X, this.MaxY - Height));
                    FormDock = PadDock.Bottom;
                
                
                }
               
            
            }
      #region 窗体隐藏恢复功能
            private void ReSizeToOrginal()
            {
                this.Size = this.OriginalSize;
            
             //   this.richTextBox1.Visible = true;        }
            private void ReSizeLeftMin()
            {
                this.Size = new Size(Border, this.Height);
                this.Location = new Point(0, this.Location.Y);
            }
            private void ReSizeTopMin()
            {
                this.Size = new Size(this.Width, Border);
               // this.richTextBox1.Visible = false;
                this.Location = new Point(this.Location.X,0);
            }
           
            private void ReSizeRightMin()
            {
                this.Size = new Size(Border, this.Height);
               
                this.Location = new Point(MaxX, this.Location.Y);        }
            private void ReSizeBottomMin()
            {
                this.Size = new Size(this.Width, Border);
                this.Location = new Point(this.Location.X, MaxY);
             //   this.richTextBox1.Visible = false;
            }
            private void _MouseLeave()
            {            DealPadDock();            if (FormDock != PadDock.none)
                {
                    switch (FormDock)
                    {
                        case PadDock.Left: this.ReSizeLeftMin(); break;
                        case PadDock.Top: ReSizeTopMin(); break;
                        case PadDock.Right: ReSizeRightMin(); break;
                        case PadDock.Bottom: ReSizeBottomMin(); break;
                        default: break;
                    }            }
            }