gpt4 book ai didi

c# - 用鼠标在窗体上移动椭圆

转载 作者:太空狗 更新时间:2023-10-30 01:04:31 25 4
gpt4 key购买 nike

如何在WPF中用鼠标在窗口上移动椭圆。

private void ellipse_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
Ellipse ellipse = sender as Ellipse;
if (ellipse != null && e.LeftButton == MouseButtonState.Pressed)
{
DragDrop.DoDragDrop(ellipse,
ellipse.Fill.ToString(),
System.Windows.DragDropEffects.Copy);
}
}

如何创建方法ellipse_MouseClick

最佳答案

Ellipses 上没有 MouseClick 事件,但是有 MouseDown 和 MouseUp 事件。我假设您正在寻找这样的东西。

WPF:

<Window x:Class="WpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="350" Width="525"
MouseMove="Any_MouseMove"
>
<Canvas>
<Ellipse Fill="Lavender" Height="100" Width="100"
MouseLeftButtonDown="Ellipse_MouseLeftButtonDown"
MouseLeftButtonUp="Ellipse_MouseLeftButtonUp"
MouseMove="Any_MouseMove" />
</Canvas>
</Window>

代码隐藏:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace WpfApplication
{
public partial class MainWindow : Window
{
private UIElement _lastClickedUIElement;
private Point? _clickOffset;

public MainWindow() { InitializeComponent(); }

private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_lastClickedUIElement = sender as UIElement;
_clickOffset = e.GetPosition(_lastClickedUIElement);
}

private void Ellipse_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
_lastClickedUIElement = null;
}

private void Any_MouseMove(object sender, MouseEventArgs e)
{
if (_lastClickedUIElement == null)
return;

_lastClickedUIElement.SetValue(Canvas.LeftProperty, e.GetPosition(this).X - _clickOffset.Value.X);
_lastClickedUIElement.SetValue(Canvas.TopProperty, e.GetPosition(this).Y - _clickOffset.Value.Y);
}
}
}

点击圆圈来移动它。只要您为它们提供这些方法,这将适用于任何 UI 元素。也可以随意在 Canvas 上添加一个矩形。

<Rectangle Fill="Lavender" Height="100" Width="100" 
MouseLeftButtonDown="Ellipse_MouseLeftButtonDown"
MouseLeftButtonUp="Ellipse_MouseLeftButtonUp"
MouseMove="Any_MouseMove" />

关于c# - 用鼠标在窗体上移动椭圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22962498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com