private void manager_OnWebSiteVisited(object source, WebSiteVisitedEventArgs args)
{
if (InvokeRequired)
txtStatus.BeginInvoke(new WebSiteVisitedCallback(WebSiteVisited), new object[] { args });
else
txtStatus.Invoke(new WebSiteVisitedCallback(WebSiteVisited), new object[] { args });
}
InvokeEvent:在创建窗口句柄之前,无法在控件上调用Invoke或BeginInvoke。
我可以使用if(IsHandleCreated)但我不知道如果没有创建该怎么办。如何创建它?
答案 0 :(得分:11)
只需访问Handle
属性,如果尚未创建句柄,它将创建句柄。您也可以明确调用CreateHandle
方法。
if (!this.IsHandleCreated)
{
this.CreateHandle();
}
顺便说一句,您对InvokeRequired/Invoke/BeginInvoke
的使用是错误的:如果InvokeRequired
为false,则根本不应使用Invoke
,您应该直接调用该方法。我想你想做的是:
if (InvokeRequired)
txtStatus.Invoke(new WebSiteVisitedCallback(WebSiteVisited), new object[] { args });
else
WebSiteVisited(args);