2

スタックパネルをボタンで埋める拡張メソッドを作りたいです。

これを行うには、 mouse-click-handler を渡す必要があります。

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);
}
4

2 に答える 2

1

RoutedEventHandler次のように渡します。

public static void FillMenuWithPages(this StackPanel spMenu, string menuIdCode,
            PagingManager pagingManager, RoutedEventHandler mouseClickHandler)
于 2010-03-10T12:49:21.890 に答える
1

それが WPF アプリケーションか Winforms アプリケーションかによって異なります。WPF の場合はRoutedEventHandler(ButtonBase.Clickドキュメントに記載されているように) になります。winforms の場合は、(ドキュメントEventHandlerに示されているように) です。Control.Click

于 2010-03-10T12:50:56.040 に答える