检测在 Canvas WPF 中单击了哪个矩形
Detect which rectangle has been clicked in Canvas WPF
我有一个 WPF canvas 以编程方式填充了一系列矩形(比方说 100,但每次的数量都不同)。
我的问题是我需要检测用户点击了哪个矩形。
我想为每个矩形分配一个不同的唯一名称,并为每个矩形分配相同的事件 "MouseLeftButtonDown",但后来我不知道如何获取已单击对象的名称。
谁能帮我?也有可能检查鼠标点击了屏幕的哪个点,获取坐标,然后计算该点周围的矩形,但对于这样一个愚蠢的问题来说似乎太复杂了。
提前致谢!
尝试使用canavas事件:
private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.OriginalSource is Rectangle)
{
Rectangle ClickedRectangle = (Rectangle)e.OriginalSource;
// Your work here I give y some actions ...
ClickedRectangle.Opacity = 0.5;
if (e.ClickCount == 2)
{
canvas.Children.Remove(ClickedRectangle);
}
else
{
isPressed = true;
startPosition = e.GetPosition(canvas);
ClickedRectangle.CaptureMouse();
}
}
}
如果所有矩形都绑定到 Rectangle_OnMouseDown 函数的 OnMouseDown 事件,您可以像这样通过名称获取矩形:
private void Rectangle_OnMouseDown(object sender, MouseButtonEventArgs e)
{
var mouseWasDownOn = e.Source as FrameworkElement;
if (mouseWasDownOn != null)
{
string elementName = mouseWasDownOn.Name;
var myRectangle = (Rectangle)this.FindName(elementName);
}
}
我有一个 WPF canvas 以编程方式填充了一系列矩形(比方说 100,但每次的数量都不同)。 我的问题是我需要检测用户点击了哪个矩形。 我想为每个矩形分配一个不同的唯一名称,并为每个矩形分配相同的事件 "MouseLeftButtonDown",但后来我不知道如何获取已单击对象的名称。 谁能帮我?也有可能检查鼠标点击了屏幕的哪个点,获取坐标,然后计算该点周围的矩形,但对于这样一个愚蠢的问题来说似乎太复杂了。 提前致谢!
尝试使用canavas事件:
private void canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.OriginalSource is Rectangle)
{
Rectangle ClickedRectangle = (Rectangle)e.OriginalSource;
// Your work here I give y some actions ...
ClickedRectangle.Opacity = 0.5;
if (e.ClickCount == 2)
{
canvas.Children.Remove(ClickedRectangle);
}
else
{
isPressed = true;
startPosition = e.GetPosition(canvas);
ClickedRectangle.CaptureMouse();
}
}
}
如果所有矩形都绑定到 Rectangle_OnMouseDown 函数的 OnMouseDown 事件,您可以像这样通过名称获取矩形:
private void Rectangle_OnMouseDown(object sender, MouseButtonEventArgs e)
{
var mouseWasDownOn = e.Source as FrameworkElement;
if (mouseWasDownOn != null)
{
string elementName = mouseWasDownOn.Name;
var myRectangle = (Rectangle)this.FindName(elementName);
}
}