zoukankan      html  css  js  c++  java
  • vc#.net使用入门2(移动无标题窗体)

    (以下待修改)
        在没有使用vc#的时候觉得,移动无标题窗体不是很难的,在真正操作时候,发现了许多问题,它毕竟没有flash中startdrag与stopdrag方法,我把我的解决过程写下来,当然对于熟练使用vc#的人来说我写的东西简直是垃圾。
        我一开始这样考虑:1、MouseDown的时候,记录当前鼠标在窗体的位置,firstpoint,设置逻辑变量a,可以移动了。2、MouseMove的时候,再获取当前鼠标的位置,减去firstpoint,获得位置变化的量▽pos,窗体的位置加上这个变化的量。3、MouseUp的时候,改变变量a,不可以移动。
        代码如下:
        待加(代码在笔记本中,没时间打开了)
        运行的结果:拖动窗体可以实现了,但是“抖”得厉害,也就是说鼠标没有放开时,窗体的位置一直在变化,拉动鼠标的幅度越大,越抖得厉害,加了一个toolTip,发现鼠标位置在变化。
        分析原因:当鼠标移动过快,移出窗体,获得的e.Location就不准确了。others……
        解决办法:waitting……
        花了半天的时候重新写的代码:(复制以下代码可以测试,注意位置)
    private Point m_pOffset; //鼠标偏移
            private int xPos, yPos; //鼠标位置
            private Point LocationMain = new Point(0, 0); //主窗口位置
            public Form1()
            {
                InitializeComponent();
            }
           //添加鼠标事件处理方法
            private void Form1_Load(object sender, EventArgs e)
            {
                this.MouseDown += new MouseEventHandler(Form1_MouseDown);
                this.MouseMove += new MouseEventHandler(Form1_MouseMove);

            }
            //响应鼠标移动,并移动窗口
            private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    Point mousePos = Control.MousePosition;
                    mousePos.Offset(m_pOffset.X, m_pOffset.Y);
                    Location = mousePos;
                    xPos = mousePos.X;
                    yPos = mousePos.Y;
                    if (xPos < 0)
                        xPos = 0;
                    if (yPos < 0)
                        yPos = 0;
                    this.LocationMain.X = xPos;
                    this.LocationMain.Y = yPos;
                }
            }
            //记录鼠标位置
            private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
            {
                m_pOffset = new Point(-e.X, -e.Y);
            }
        暂告一段落。
    //下篇,用户状态的物理存储(ini等文件的读写)

  • 相关阅读:
    如何讓你的程序在退出的時候執行一段代碼?
    05_Python爬蟲入門遇到的坑__總結
    04_Python爬蟲入門遇到的坑__向搜索引擎提交關鍵字02
    03_Python爬蟲入門遇到的坑__向搜索引擎提交關鍵字01
    02_Python爬蟲入門遇到的坑__反爬蟲策略02
    01_Python爬蟲入門遇到的坑__反爬蟲策略01
    Python爬蟲--rrequests庫的基本使用方法
    C#筆記00--最基礎的知識
    為元組中的每一個元素命名
    Filter函數
  • 原文地址:https://www.cnblogs.com/numen/p/348702.html
Copyright © 2011-2022 走看看