Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Перетаскивание формы за Border


Автор: CasperSC 31.3.2010, 15:39
Пытаюсь перетащить форму за Border растянутый на всю форму, чтобы закруглить концы. Сама форма невидимая и имеет больший размер, чем Border, чтобы можно было отбрасывать тень. У меня не получается это сделать. На WinForms это делалось так:
Код

        private void panelBorder_MouseDown(object sender, MouseEventArgs e)
        {
            mousePressed = true;
            if (sender.Equals(this.panelBorder))
            {
                mouseDownPos = new Point(panelBorder.Location.X + e.Location.X, panelBorder.Location.Y + e.Location.Y);
            }
            else if (sender.Equals(this.formMessage))
            {
                mouseDownPos = new Point(e.Location.X,  e.Location.Y);

            }
        }

        private void panelBorder_MouseUp(object sender, MouseEventArgs e)
        {
            mousePressed = false;
        }

        private void panelBorder_MouseMove(object sender, MouseEventArgs e)
        {
            if (mousePressed)
            {
                if (e.Button == MouseButtons.Left)
                {
                    this.formMessage.Left = Cursor.Position.X - mouseDownPos.X;
                    this.formMessage.Top = Cursor.Position.Y - mouseDownPos.Y;
                }
            }
        }


А с использованием WPF не могу разобраться, что к чему, пробовал так, форма уезжает за экран вправо/вниз:
Код

        private void Window_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                this.Left = oldPointMousePosition.X;
                this.Top = oldPointMousePosition.Y;
                oldPointMousePosition = this.PointToScreen(e.GetPosition(this));
            }
        }

        private void border1_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            oldPointMousePosition = this.PointToScreen(e.GetPosition(this));
        }

Автор: CasperSC 1.4.2010, 00:32
Многие новички в WPF наверное будут в шоке, я сам в шоке )) Это делается так:
Код

        private void border1_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            this.DragMove();
        }


И всё!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)