将点击事件添加到多边形 class c#

add click event to polygon class c#

我有一个带多边形的 class。

我的程序打印 class 中的多边形,我想将点击事件添加到 class。单击多边形时,事件将 运行.

我想添加点击事件、扩展方法,类似这样的东西(只是代替这个点击事件):

public static class extensionMethodPolygon
{
    public static void func1(this Polygon p)
    {
        Console.WriteLine("polygon");
    }
}

但我不知道怎么办。

我做了什么:

        Polygon []arr = new Polygon[72];
        for (int i = 0; i < 72; i++)
        {
            arr[i] = allPolygons[i].Polygon;
            arr[i].MouseUp += MainWindow_MouseUp;
            arr[i].MouseDown+=MainWindow_MouseUp;
        }
        foreach (Polygon item in arr)
        {
            MyGrid.Children.Add(item);
        }

和:

    void MainWindow_MouseUp(object sender, MouseButtonEventArgs e)
    {
        MessageBox.Show("Polygon");
    }

但是当我点击时,事件只在部分多边形上起作用,我不知道为什么不能在所有多边形上起作用。

有人知道怎么解决这个问题吗?或者提供其他解决方案?

谢谢

Polygon 控件没有点击事件,但它有 mouse-down/mouse-up 个事件,您可以这样处理:

XAML:

<Polygon MouseDown="Polygon_MouseDown" MouseUp="Polygon_MouseUp" Width="100" Height="100"/>

隐藏代码:

private void Polygon_MouseDown(object sender, MouseButtonEventArgs args)
{
    System.Windows.Forms.MessageBox.Show("Mouse Down!"); // Break Here For Debugging

    Polygon obj = sender as Polygon;
    this.Dispatcher.Invoke(new Action(() =>
    {
         obj.Width += 50;
    });
}

private void Polygon_MouseUp(object sender, MouseButtonEventArgs args)
{
    System.Windows.Forms.MessageBox.Show("Mouse Up!"); // Break Here For Debugging

    Polygon obj = sender as Polygon;
    this.Dispatcher.Invoke(new Action(() =>
    {
         obj.Height += 50;
    });
}

然后,如果需要,您可以在 mouse-down/mouse-up 事件处理程序中包含动画。这里还有一些 Mouse-Down 的文档。