none
Перемещаемые по форме контролы. RRS feed

  • Вопрос

  • Здравствуйте.

    Сочинил универсальный метод для любых контролов для их перетаскивания по форме правой кнопкой мыши. Вот он:

     

    int X, Y;
      private void ControlMove(object sender, MouseEventArgs e)
      {
       if (MouseButtons == System.Windows.Forms.MouseButtons.Right)
       {
        if (X == -1)
        {
         X = Cursor.Position.X;
         Y = Cursor.Position.Y;
        }
        else
        {
         (sender as Control).Left += Cursor.Position.X - X;
         (sender as Control).Top += Cursor.Position.Y - Y;
         X = Cursor.Position.X;
         Y = Cursor.Position.Y;
        }
       }
       else
       {
        X = -1;
        Y = -1;
       }
      }
    

     

    Просто подписываем мой метод на событие MouseMove у нужного контрола и вуаля, его можно таскать по форме.

    Вопросов два.

    1. Если использую этот метод на "разношерстных" контролах (Button и MonthCalendar например) после перетаскивания календаря, перетаскивание кнопки глючит (по ходу не верно координаты определяются). Хотелось бы знать  почему, и как исправить.

    2. Как зарядить проверку на нажатые мод. клавиши (как то Ctrl, Win пр.) для того чтобы перетаскивать элементы с нажатой клавишей.

     

    Спасибо.

    19 февраля 2011 г. 14:47

Ответы

Все ответы