Пытаюсь перетащить форму за 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)); }
|
|