gpt4 book ai didi

C# 自定义事件始终为空

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

我知道现在在 stackOverFlow 上有一些关于这个问题的问题,但没有一个能解决我的问题。

我使用“asp.net webform”,在我的 UserControl 中,当我点击一个 Button 时,在使用此 UserControl 的页面中触发一个事件。所以这是我的代码。

// in user control
public delegate void OnConversationSubmitDelegate(object sender, EventArgs e);
public event OnConversationSubmitDelegate OnConversationSubmitEvenet;

protected void btnUserSubmit_Click(object sender, EventArgs e)
{
if (OnConversationSubmitEvenet != null) //This is always null
{
OnConversationSubmitEvenet(this, new EventArgs());
}
}

// in main page
protected void Page_Load(object sender, EventArgs e)
{
UserControls.ConversationBox m = new UserControls.ConversationBox();
m.OnConversationSubmitEvenet += new UserControls.ConversationBox.OnConversationSubmitDelegate(Test_Event);
}

public static void Test_Event(object sender, EventArgs e)
{
string g = "sdfsd";
}

问题是 OnConversationSubmitEvenet 始终为空,Test_Event 方法从未运行。

最佳答案

看来您正在 Page_Load 中创建一个新的ConversationBox,但我怀疑由于您没有将它添加到页面控件中,所以您也在 aspx 中添加了一个 ConversationBox?

如果您确实在 aspx 中添加了一个 ConversationBox,那么代替这个:

 UserControls.ConversationBox m = new UserControls.ConversationBox();
m.OnConversationSubmitEvenet += new UserControls.ConversationBox.OnConversationSubmitDelegate(Test_Event);

您应该使用您在 aspx 中添加的 ConversationBox:

myConversationBox.OnConversationSubmitEvenet += new UserControls.ConversationBox.OnConversationSubmitDelegate(Test_Event);

或者您也可以删除在 aspx 中添加的控件,而将 m 添加到页面控件:

UserControls.ConversationBox m = new UserControls.ConversationBox();
m.OnConversationSubmitEvenet += new UserControls.ConversationBox.OnConversationSubmitDelegate(Test_Event);
Page.Controls.Add(m); // This line adds the control to the page

关于C# 自定义事件始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30208152/

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