Winforms VS2017/2017中缺少InvokeRequired属性
我正在创建一个Windows窗体程序,在VS2017/2019中,无论文本框控件还是窗体本身,intellisense都不会提示InvokeRequired属性 编译时,出现错误:“InvokeRequired”不是编译器生成的Textbox的成员 在对象浏览器中导航时,控件类定义了InvokeRequired属性,TextBoxBase继承控件,然后TextBox继承TextBoxBase。所以TextBox应该有这个属性Winforms VS2017/2017中缺少InvokeRequired属性,winforms,invokerequired,Winforms,Invokerequired,我正在创建一个Windows窗体程序,在VS2017/2019中,无论文本框控件还是窗体本身,intellisense都不会提示InvokeRequired属性 编译时,出现错误:“InvokeRequired”不是编译器生成的Textbox的成员 在对象浏览器中导航时,控件类定义了InvokeRequired属性,TextBoxBase继承控件,然后TextBox继承TextBoxBase。所以TextBox应该有这个属性 有人对这个问题有线索吗 然后,Textbox对象不是Windows.F
有人对这个问题有线索吗 然后,
Textbox
对象不是Windows.Forms.Control
。顺便说一句,缺少可以重现问题的对象声明和(代码+上下文)。Btw2:您不需要invokererequired
BeginInvoke
容器表单或使用当前的SynchronizationContext
(考虑到未来,后者可能是更好的解决方案)。Btw3:Visual Studio 2017年还是2019年?您是否同时使用这两个项目?对于一个简单的情况,如果我尝试在非UI线程中更新textbox的内容,运行时将引发一个异常,禁止我修改UI元素,这就是为什么需要InvokeRequired。由于TextBox类继承控件,即使我将TextBox对象强制转换为Control类,InvokeRequired属性也不会显示。这是奇怪的部分。invokererequired不是必需的。这是一种线程安全的方法,用于检查当前代码是否在UI线程以外的线程中执行。您不需要它,因为您可以简单地BeginInvoke()
UI线程(从另一个线程或从UI线程本身)。如果文本框未公开控件派生属性,则TextBox
对象不会派生自控件。您没有发布任何与问题相关的代码或可以重现问题的代码,因此没有人知道您实际在做什么。