当我通过拖放创建一个控件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)
看来你的实际问题是另一个问题:从另一个线程更新控件.这不应该通过静态控件来完成!
这些相关问题可以解决您的问题:
设计器代码不应该由用户修改,因为每次您在设计器中更改表单时,Visual Studio 都会重新编写它(正如您所发现的)。
一种方法是将控件声明和初始化移至非设计器代码文件。但是,这意味着您的控件将不再出现在设计器中。
编辑: 这不是让其他线程可以访问您的控件的方法!我想不出使控件静态的有效理由。