Я получил контрольный экземпляр My_Control.
В зависимости от текущего шага в этом элементе должны отображаться различные субэлементы управления.
public partial class Teach_All : User_Control
{
/// <summary>
/// this event gets called on an index change
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Current_index_index_changed(object sender, CIndex_Updater.Index_Changed_Eventargs e)
{
//remove old Controll
int old_index = e.new_index - 1;
if (old_index >= 0)
{
if (InvokeRequired)
{
this.BeginInvoke((MethodInvoker)(() => Controls.Remove(teach_steps[old_index])));
}
else
{
this.Controls.Remove(teach_steps[old_index]);
}
}
//do some stuff....
//Display next control
if (InvokeRequired)
{
this.BeginInvoke((MethodInvoker)(() => Controls.Add(teach_steps[e.new_index])));
}
else
{
this.Controls.Add(teach_steps[e.new_index]);
}
}
}
Однако добавление элемента управления приводит к недопустимому потоку исключение доступа. Таким образом, Invoke не работает должным образом. Это событие может быть запущено из любого потока, поэтому я считаю, что мне нужен вызов.
Не могли бы вы дать мне несколько советов о том, как заставить этот вызов работать?