我遇到了一个问题,我很困惑,我希望有人能对此有所了解。我有一个Form调用form2,我正在运行一些代码以Listview(s)使用 a将一些项目添加到该表单中,MethodInvoker以便 UI 线程在我这样做时保持响应。
第一次使用它时一切都运行良好,但是当我关闭该表单(上面有 Listview 的那个)并再次运行我的代码时,我得到了一个InvalidOperationException: Invoke or BeginInvoke cannot be called on a control until the window handle has been created.
因此,我对此进行了调查,并在 Google 上进行了更多搜索,并查看了 StackOverflow,我发现问题是由于表单没有为其创建句柄引起的,因为它在第一次关闭时就被处理掉了。所以我的解决方案是让它强制表单通过CreateControl(). 即使在使用它之后,当我在异常中断中检查它时,我的表单仍然没有设置句柄。它有00x0000000或类似的东西,我仍然得到我的InvalidOperationException. 我也尝试过检查.isDisposed()并尝试使用CreateControl(),但没有运气。你们有没有人听说过这个?SO上的其他线程对我没有任何解决方案。
我的代码:
if (!form2.IsHandleCreated)
{
form2.CreateControl();
}
form2.Invoke((MethodInvoker) delegate
{
//Do Stuff Here.
}
哆啦的时光机
相关分类