Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何访问设计Windows窗体C_C#_Winforms - Fatal编程技术网

C# 如何访问设计Windows窗体C

C# 如何访问设计Windows窗体C,c#,winforms,C#,Winforms,我对Windows窗体非常陌生,我知道C语言,只是不在同一个上下文中。我四处搜索了一段时间,在我看来,每个解决方案都在做类似的事情: Label1.Text = "I'm a label". 但我不明白Label1是从哪里来的。 我所拥有的只是一个新的Windows窗体应用程序,它附带一个预加载的窗体和一个程序类。因此,由于这个类附带了一些代码,我认为这将是访问标签属性的一种逻辑方式: static class Program { static void Main(String[] a

我对Windows窗体非常陌生,我知道C语言,只是不在同一个上下文中。我四处搜索了一段时间,在我看来,每个解决方案都在做类似的事情:

Label1.Text = "I'm a label".
但我不明白Label1是从哪里来的。 我所拥有的只是一个新的Windows窗体应用程序,它附带一个预加载的窗体和一个程序类。因此,由于这个类附带了一些代码,我认为这将是访问标签属性的一种逻辑方式:

static class Program
{
    static void Main(String[] args)
    {
        FormUpdate frmUpdate = new FormUpdate();

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(frmUpdate);

        // Why isn't this a suitable way of getting the label?
        frmUpdate.label1.Text = "I cause an error!";
    }
}
但我不明白Label1是从哪里来的

有人使用Visual Studio Designer for Windows窗体,将标签组件拖放到窗体上。由于VisualStudio无法为它们命名,但需要一个名称,所以它只是简单地计算。第一个丢弃的标签称为Label1

默认情况下,添加的那些控件的访问说明符是私有的,我建议保持这种方式。如果要与表单交互,可以从表单内部进行交互,也可以编写一个调用的公共方法,该方法将设置所有私有属性,如某个标签的文本


一般来说,Application.RunfrmUpdate;正在运行程序,基于您提供的起始表单。之后的任何事情都不会有什么效果。因此,您运行表单并在关闭表单后设置标签。这不会有任何明显的效果。您需要在运行窗体之前或在运行窗体时执行此操作。

我猜是因为窗体必须在应用程序对象的上下文中运行。这意味着表单中的所有活动都必须在对Application.Run的调用中进行。还要注意,表单控件的默认值为private。表单项目有一个designer cs文件,在表单初始化的构造函数期间,在该文件中添加控件。您不应该将任何代码放入Program.Cs文件中。要将对象添加到表单中,必须在其构造完成后进行。表单在构造函数中有一个块,因此它不会终止。所以你的代码永远不会被执行。表单中的Initialize方法构造了所有控件,就像你的标签一样。明白了,谢谢大家。我只是觉得Program.cs应该是你可以删除的东西,而不是我在那里开始编程的另一个类。我发现Designer.csI知道Label1是从哪里来的,我只是不知道它是从哪里来的。很抱歉我的措辞不好,我已经从Program.cs文件中删除了所有内容并将其放到表单中。第一个删除的标签称为Label1。实际上它被称为label1。他们承诺在秋季vs中修复该漏洞。。