如何在Visual Studio中将控件的修改器更改为静态

Way*_*yne 6 c# modifier

当我通过拖放创建一个控件VS自动生成如下代码:

public System.Windows.Forms.Label label1;
Run Code Online (Sandbox Code Playgroud)

当我想将该控件的修饰符更改为静态时,我转到Form1.Designer.cs并编辑为:

public static System.Windows.Forms.Label label1;
Run Code Online (Sandbox Code Playgroud)

没关系.但是当我修改每个控件时,VS会自动将其更改为原点:(.那么如何将控件的修改更改为静态?

对不起,我的英文不好:(


评论中的代码:

public static void setLabelInfoVisible(bool visible) 
{ 
   if (Form1.labelInfo.InvokeRequired) 
   { 
      setLabelInfoVisibleDelegate del =
         new setLabelInfoVisibleDelegate(setLabelInfoVisible);
      Form1.labelInfo.Invoke(del, new object[] { visible }); 
   } 
   else 
   { 
     Form1.labelInfo.Visible = visible; 
   } 
}
Run Code Online (Sandbox Code Playgroud)

Dir*_*mar 6

看来你的实际问题是另一个问题:从另一个线程更新控件.这应该通过静态控件来完成!

这些相关问题可以解决您的问题:

如何从c#中的另一个线程更新GUI上的文本框

如何从C#中的另一个线程更新GUI?


Ode*_*ded 4

设计器代码不应该由用户修改,因为每次您在设计器中更改表单时,Visual Studio 都会重新编写它(正如您所发现的)。

一种方法是将控件声明和初始化移至非设计器代码文件。但是,这意味着您的控件将不再出现在设计器中。

编辑: 这不是其他线程可以访问您的控件的方法!我想不出使控件静态的有效理由。