我有问题。我使用TabControl并使用下一个代码:
MyTabControl.TabPages.Add(patternID, header);
MyTabControl.SelectTab(patternID);
但是我在SelectTab(patternID)中得到了KeyNotFoundException。但真正有趣的是,只有在我尝试添加第二个标签页时才会出现此异常。
我错过了什么?
InThread(() =>
{
bookBoxControl.TabPages.Add(pem.patternID, str);
playPageMenuItem.Enabled = true;
bookBoxControl.SelectTab(pem.patternID);
});
private void InThread(MethodInvoker callBack)
{
lock (this)
{
if (IsDisposed)
return;
if (InvokeRequired)
Invoke(callBack); // !!line 118!!
else
callBack();
}
}
我使用InThread()从非图形线程更改表单元素。
堆栈跟踪:
未处理System.Collections.Generic.KeyNotFoundException 消息=字典中没有给定的键。 来源= System.Windows.Forms的 堆栈跟踪: System.Windows.Forms.Control.MarshaledInvoke(Control caller,Delegate方法,Object [] args,布尔同步) System.Windows.Forms.Control.Invoke(Delegate方法,Object [] args) System.Windows.Forms.Control.Invoke(委托方法) Project1.Form1.InThread(MethodInvoker callBack) - C:\ Users \ user \ Documents \ Visual Studio 2010 \ Projects \ Project1 \ Form1.cs:第118行 Project1.Form1.Run()C:\ Users \ user \ Documents \ Visual Studio 2010 \ Projects \ Project1 \ Form1.cs:строка202 System.Threading.ThreadHelper.ThreadStart_Context(对象状态) System.Shreading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态) вSystem.Threading.ThreadHelper.ThreadStart() InnerException: