gpt4 book ai didi

c# - 如何将鼠标单击方法作为参数传递?

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:39 25 4
gpt4 key购买 nike

我想做一个扩展方法,用按钮填充堆栈面板。

为了做到这一点,我必须传入鼠标点击处理程序

mouseClickHandler 是什么类型?参数必须在这里?

我知道它是这样的,但它们都不起作用:

  • delegate
  • Func<object, RoutedEventArgs>
  • Action<>

代码:

public static void FillMenuWithPages(this StackPanel spMenu, string menuIdCode, 
PagingManager pagingManager, ??????? mouseClickHandler)
{
var menuPageItems = PageItems.GetPageItemsWithMenu(menuIdCode);
spMenu.Children.Clear();
foreach (var pageItem in menuPageItems)
{
var button = new Button();
button.Content = pageItem.Title;
button.Margin = new Thickness { Right = 3 };
button.Tag = pageItem.IdCode;
button.Cursor = Cursors.Hand;
button.Click += new RoutedEventHandler(mouseClickHandler);
if (pageItem.IdCode == pagingManager.CurrentPageItemIdCode)
button.IsEnabled = false;
spMenu.Children.Add(button);
}
}

我会这样调用它:

QuickMenu.FillMenuWithPages("quick", PagingManager, Menu_Button_Click);

这是鼠标点击处理器:

void Menu_Button_Click(object sender, RoutedEventArgs e)
{
string pageItemIdCode = ((FrameworkElement)sender).Tag.ToString();
PagingManager.SwitchPage(pageItemIdCode);
}

最佳答案

像这样将它作为 RoutedEventHandler 传递:

public static void FillMenuWithPages(this StackPanel spMenu, string menuIdCode,
PagingManager pagingManager, RoutedEventHandler mouseClickHandler)

关于c# - 如何将鼠标单击方法作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2416903/

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