gpt4 book ai didi

c# - C#从另一个类中的另一个静态事件引发事件

转载 作者:行者123 更新时间:2023-11-30 20:05:05 27 4
gpt4 key购买 nike

需要来自另一个班级的呼叫事件的帮助。
我有宣告事件的课程:

     public class MxPBaseGridView : GridView
{

public event AddNewItemsToPopUpMenuEventHandler AddNewItemsToPopUpMenu;
...
}


我需要从中调用事件的另一个类具有方法和“ AddNewItemsToPopUpMenuEventHandler”委托

    public delegate void AddNewItemsToPopUpMenuEventHandler(PopupMenuShowingEventArgs e);
public static class GridViewUtils
{
public static void gridView_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
{
if (e.MenuType != DevExpress.XtraGrid.Views.Grid.GridMenuType.Row)
{
if (menu != null)
{
if (sender is MxPBaseAdvBandedGridView)
{
MxPBaseAdvBandedGridView currentGrid = sender as MxPBaseAdvBandedGridView;

...

currentGrid.AddNewItemsToPopUpMenu();
if (currentGrid.AddNewItemsToPopUpMenu != null) //there i need to call event
currentGrid.AddNewItemsToPopUpMenu(e); // how you understand it doesn't work
}


那么做同样工作的正确方法是什么?

最佳答案

您只能在已定义事件的类中调用事件。常见的是使用特定的方法来触发事件,您必须在定义事件的类中添加该方法。对于您的情况,在类MxPBaseGridView中。添加以下内容:

public void OnAddNewItemsToPopUpMenu(<eventargstype> e) {
var addNewItemsToPopUpMenu = AddNewItemsToPopUpMenu;
if (addNewItemsToPopUpMenu != null)
addNewItemsToPopUpMenu(this, e);
}


注意:我不确定eventargs-type是什么,所以我将其保持打开状态。

然后,您可以从静态方法中调用此方法。

注意:通常,我将On ...方法定义为私有方法,必要时将其定义为受保护的方法。在这种情况下,我将其定义为public,因为您需要从课堂之外调用它。

关于c# - C#从另一个类中的另一个静态事件引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934631/

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