C#调用控件。添加

时间:2019-03-25 14:30:33

标签: c# invoke

我有一个控件实例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]);
            }
      }
}

但是,控件添加会导致无效的线程访问异常。因此,调用无法按预期方式工作。可以从任何线程触发该事件,因此我认为我需要调用。

您能给我一些如何使调用生效的提示吗?

0 个答案:

没有答案