我在我的user control
上有一个刷新按钮,每次点击它时都可以正常工作。这是它的点击事件的代码:调用包含委托的点击事件会阻止应用程序启动
private void btnRefresh_Click(object sender, EventArgs e)
{
if (!RefreshFolder())
{
Notify(new string[] { "Refresh failed." });
}
else
{
Notify(new string[] { "Refreshed." });
}
}
Notify函数碰巧是来自我的主窗体的委托调用。正常调用时,此功能运行良好。我想要做的是当我的用户控件加载时引发上述事件。但是,当我在加载事件中调用btnRefresh.PerformClick()
时,应用程序无法启动并在一段时间后自动退出。但是,当代替Notify
函数时,我将MessageBox.Show("blah")
函数正常工作。
这是代表我用:
public delegate void NotifyMe(string[] messages);
而且在我的主要形式,我在它的构造以下行让我的用户控件可以使用的通知主要控制功能:
userctrlSelectManualCampaignFile.Notify += new NotifyMe(Notify);
该函数的工作原理与我所说的完全吻合,除非当我尝试提高点击事件时。有任何想法吗?
更新: 主要形式的构造:
public MainForm()
{
InitializeComponent();
logger = new Logger();
connectionHelper = new ConnectionHelper();
datetimeHelper = new DateTimeHelper();
userctrlSettingsGeneral.Notify += new NotifyMe(Notify);
userctrlSelectManualCampaignFile.Notify += new NotifyMe(Notify);
}
我的用户控件的构造:
public ManualCampaignFiles()
{
InitializeComponent();
}
是的。显示构造函数的形式 –
@ T.S。用主窗体和用户控件构造函数更新。 – Disasterkid
如果改为'btnRefresh.PerformClick()'你只需调用'btnRefresh_Click'?此外,这并不令人困惑。你有'userctrlSettingsGeneral.Notify + = new NotifyMe(Notify);'。基本上,你想实现回调效果。你应该有'private notifyMe _callback;'在你的控制之下。然后做'if(_callback!= null)_callback(); –