C # Invoke Controls.Add - PullRequest
       13

C # Invoke Controls.Add

0 голосов
/ 25 марта 2019

Я получил контрольный экземпляр 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 не работает должным образом. Это событие может быть запущено из любого потока, поэтому я считаю, что мне нужен вызов.

Не могли бы вы дать мне несколько советов о том, как заставить этот вызов работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...