设计视图空白Windows窗体在Visual Studio 2017年

问题描述:

我的解决方案开辟了代码编辑器Form1.cs的通过右键单击Form1.cs中,我创建在Visual Studio中一个新的Windows窗体项目浏览器,然后点击查看代码。设计视图空白Windows窗体在Visual Studio 2017年

然后我在我自己的一些代码加入,使Form1中现在如下:

public partial class Form1 : Form 
    { 
     Button button1; 
     Button button2; 

     public Form1() 
     { 
      InitializeComponent(); 

      Size = new Size(700, 500); 
      FormBorderStyle = FormBorderStyle.FixedDialog; 

      button1 = new Button(); 
      button1.Size = new Size(60, 40); 
      button1.Location = new Point(30, 30); 
      button1.Text = "Button 1"; 
      this.Controls.Add(button1); 

      button2 = new Button(); 
      button2.Size = new Size(60, 40); 
      button2.Location = new Point(100, 30); 
      button2.Text = "Button 2"; 
      this.Controls.Add(button2); 

      button1.Click += new EventHandler(AnyButton_Click); 
      button2.Click += new EventHandler(AnyButton_Click); 
     } 

     private void AnyButton_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show("You clicked a button!"); 
     } 
    } 

当我运行该项目,Form1上绘制完全按照预期,按一下按钮事件做工精细。

但是,设计者视图(Form1.cs [Design])向我显示一个空白表单。 有谁知道如何解决这个问题,以便我可以添加自己的代码,但它会反映在设计视图中?

+2

这是预期的行为。设计者不会调用窗体构造函数。在运行应用程序之前,您不会看到任何手动添加的控件。 – Crowcoder

+1

它可能是空白的,因为你没有在设计器上放置任何东西。您改为选择手动编写代码。这很好,只是效率不高。考虑从工具箱中删除这两个按钮,并使用属性窗口设置Size和FormBorderStyle属性。现在它不再是空白。 –

+0

好的,所以你必须在处理编码控制和与设计师合作之间作出直接选择? –

有两种方法,才能使按钮运行之前出现:

  1. 使用拖放工具(称为表单设计器),你当你双击MyUserControl.cs文件添加他们。
  2. 在扩展MyUserControl.cs的设计器文件(MyUserControl.Designer.cs)中加入代码。我会不是虽然推荐这个,因为你可以很快弄糟一些东西。

想知道更多?

因为它可以在下面的图片中可以看出,Windows窗体包括三个项目:

  1. 资源文件(MainWindow.resx):可以包含由形式使用的资源,但这是没有什么关系的在这个话题中。

  2. 设计器文件(MainWindows.Designer.cs):拖放设计器的代码版本。在这里,你可以实际编码你的图形,而不是使用图形设计器。我不会推荐这个。如果你喜欢编写你的UI的想法,可以看看WPF。

  3. “主”文件(MainWindow.cs):这应该是您使用GUI的主要访问权限。双击它,在Visual Studio设计器窗口中打开GUI。在这里,您可以将项目拖放到表单上,并修改其属性(和事件)。您也可以右键单击它并选择“查看代码”以转到表单后面的代码。这也是生成事件代码的地方。

Userform content

+0

MyUserControl.Designer.cs文件在哪里? – VladP

+1

@VladP当您展开Windows窗体的“主”文件时,您将看到它作为第一个选项。看看我已经添加的扩展指南。 – Noceo

+0

非常感谢。这很有用。 – VladP