2009-11-26 101 views
0

我的實驗室合作伙伴和我正在使用C#編寫Visual Studio 2008中的學校項目。他給我發了這個項目的最新版本。當我打開它時,我以前創建的一些(但不是全部)表單現在缺少添加到它們的所有組件。但是,當我運行該項目時,組件在那裏並且工作。除邊界外,表格上的所有內容都是「隱藏的」。Visual Studio C#表單缺失組件

任何想法如何訪問缺失的組件和編輯表單? ShowAllForms處於活動狀態。

它似乎有一些類似於下面的代碼已被添加到每個表單(但不是我)的.cs代碼。我在互聯網上的其他地方閱讀過,這個代碼可以由Visual Studios自動生成。這可能是問題嗎?如果是這樣,Visual Studios爲什麼將它添加到我的代碼中?

private void InitializeComponent() 
     { 
      this.SuspendLayout(); 
      // 
      // VideoPoker 
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
      this.ClientSize = new System.Drawing.Size(804, 549); 
      this.Name = "VideoPoker"; 
      this.Load += new System.EventHandler(this.VideoPoker_Load_1); 
      this.ResumeLayout(false); 

     } 

謝謝。

回答

0

是Visual Studio自動添加InitializeComponent()方法。按照名稱的含義,表單本身的每個屬性都被初始化,並且對於您在Designer中放入表單的任何對象都是相同的。 假設您在設計器中編輯最終會自動進入此代碼部分。

您不應該手動編輯此代碼。

關於缺少的控件,我想出於某種原因,代碼被刪除,將它們放入窗體的ControlCollection中,該窗體通過屬性Form.Controls訪問。

您應該檢查,如果在InitializeComponent()方法的代碼仍然包含像

this.Controls.Add(this.label1); 
this.Controls.Add(this.textBox1); 

線,其被認爲是在表格上的每個控制。

那些行應該遠離方法結束。

+0

我不會說永遠不要修改代碼手冊,只是確保你知道你在做什麼,如果你這樣做。 – 2010-01-25 21:14:38

0

Visual Studio通常會在.Designer.cs下添加InitializeComponent方法,當您添加新控件時,會修改此方法以添加新控件。以下是在備份現有文件後可以嘗試的內容

  1. 檢查InitializeComponent是否包含表單中所有控件的代碼。

  2. 清理現有代碼並重新編譯項目。

  3. 在解決方案資源管理器中,確保您的designer.cs直接出現在.cs下,而不是其他任何文件(如.resx等)下。例如,如果您的設計器文件被意外添加到.resx文件下,您可以嘗試從項目中移除設計器文件(在進行備份後),然後再次添加它。它應該被添加到.cs