2017-05-01 103 views
0

我的解決方案開闢了代碼編輯器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

好的,所以你必須在處理編碼控制和與設計師合作之間作出直接選擇? –

回答

3

有兩種方法,才能使按鈕運行之前出現:

  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

相關問題