none
Код не работает. RRS feed

  • Вопрос

  • bool move; private void Form1_MouseDown(object sender, MouseEventArgs e) { move = true; } private void Form1_MouseUp(object sender, MouseEventArgs e) { move = false; } private void Form1_MouseMove(object sender, MouseEventArgs e) { Location = new Point(MousePosition.X - (MousePosition.X - Left), MousePosition.Y - (MousePosition.Y - Top)); }

    Когда я перетаскиваю форму она не реагирует, но она реагирует если я напишу в код следующее:

            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                Location = new Point(MousePosition.X - 5, MousePosition.Y - 5);
            }


    23 марта 2012 г. 12:07

Ответы

  • Вот так работает:
            bool move;
            int x;
            int y;
    
    
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                if (move) Location = new Point(MousePosition.X - x, MousePosition.Y - y);
            }
    
            private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
                move = false;
            }
    
            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                move = true;
                x = MousePosition.X - this.Left;
                y = MousePosition.Y - this.Top;
            }


    Для связи [mail]

    • Помечено в качестве ответа Doctor Gordon 23 марта 2012 г. 14:27
    23 марта 2012 г. 14:24

Все ответы

  • Добрый день.

    Она реагирует, но

    MousePosition.X - (MousePosition.X - Left)  == Left

    MousePosition.Y - (MousePosition.Y - Top)  == Top

    В итоге вы получаете те же координаты что и в текущем Location

    Математушка :))))


    • Изменено Alexandr Gashper 23 марта 2012 г. 12:38
    • Помечено в качестве ответа Doctor Gordon 23 марта 2012 г. 12:54
    • Снята пометка об ответе Doctor Gordon 23 марта 2012 г. 14:08
    23 марта 2012 г. 12:36
  • Добрый день.

    Она реагирует, но

    MousePosition.X - (MousePosition.X - Left)  == Left

    MousePosition.Y - (MousePosition.Y - Top)  == Top

    В итоге вы получаете те же координаты что и в текущем Location

    Математушка :))))


    Да ясно, почему следующий код не срабатывает?:

    bool move;
            int x;
            int y;
    
            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                move = true;
                x = MousePosition.X;
                y = MousePosition.Y;
            }
    
            private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
                move = false;
            }
    
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                if (move) Location = new Point(MousePosition.X - (x - Left), MousePosition.Y - (y - Top));
            }

    23 марта 2012 г. 13:07
  • Вот так работает:
            bool move;
            int x;
            int y;
    
    
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                if (move) Location = new Point(MousePosition.X - x, MousePosition.Y - y);
            }
    
            private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
                move = false;
            }
    
            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                move = true;
                x = MousePosition.X - this.Left;
                y = MousePosition.Y - this.Top;
            }


    Для связи [mail]

    • Помечено в качестве ответа Doctor Gordon 23 марта 2012 г. 14:27
    23 марта 2012 г. 14:24