У меня проблема.Я использую TabControl и имею следующий код:
MyTabControl.TabPages.Add(patternID, header);
MyTabControl.SelectTab(patternID);
, но я получаю исключение KeyNotFoundException в SelectTab (patternID).Но действительно интересно то, что я получаю это исключение, только когда пытаюсь добавить 2-ю вкладку.
что я пропустил?
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 не обрабатывается. Message = Указанный ключ отсутствует в словаре.Source = System.Windows.Forms StackTrace: в System.Windows.Forms.Control.MarshaledInvoke (вызывающий элемент управления, метод Delegate, аргументы Object [], логический синхронный) в System.Windows.Forms.Control.Invoke (метод Delegate, Object [] args) в System.Windows.Forms.Control.Invoke (метод делегата) в Project1.Form1.InThread (вызов метода MethodInvoker) в C: \ Users \ пользователь \ 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.Threading.ExecutionContext.Run (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта) в System.Threading.ThreadHelper.ThreadStart () InnerException: