2012-02-16 29 views
1

我正在查看別人的代碼,並注意到一些用戶控件項目有Class.Designer.csClass.resx文件,而其他人只有.resx文件。有沒有一種方法可以將.cs文件添加到只有.resx文件的控件中?c#Forms:某些UI元素有兩個文件(.cs&.resx),一些只有(.resx)。如何將.cs文件添加到用戶控件?

爲什麼會發生這種情況?

兩者有什麼區別嗎?它看起來像設計器代碼在Designer.cs文件中,而只有.rexs的UC具有在一個.cs文件中的所有代碼。

謝謝!

+1

不同之處在於UCS沒有在VS2003中創建的Designer.cs文件。在* partial *關鍵字可用之前支持C#的版本。不知道爲什麼你對此感到煩惱,而是創建自己的控件。 – 2012-02-17 01:03:36

+0

@HansPassant是的,我很清楚我可以創建自己的控件。如上所述,我正在查看另一個代碼並對其進行修改。我喜歡這兩種文件格式,所以我想知道是否有辦法將舊版UC「轉換」爲兩種文件格式。感謝關於VS2003的說明。 – john 2012-02-17 16:05:09

回答

2

有些人在創建用戶控件和表單時自動刪除了Class.Designer.cs文件。如果他們這樣做了,那麼管理Form上控件放置的代碼就不再被分成一個分類類,而是包含在Class.cs文件後面的代碼中。

例如,這裏是Form 1.designer.cs。

namespace WindowsFormsApplication1 
{ 
    partial class Form1 
    { 
     /// <summary> 
     /// Required designer variable. 
     /// </summary> 
     private System.ComponentModel.IContainer components = null; 

     /// <summary> 
     /// Clean up any resources being used. 
     /// </summary> 
     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
     protected override void Dispose(bool disposing) 
     { 
      if (disposing && (components != null)) 
      { 
       components.Dispose(); 
      } 
      base.Dispose(disposing); 
     } 

     #region Windows Form Designer generated code 

     /// <summary> 
     /// Required method for Designer support - do not modify 
     /// the contents of this method with the code editor. 
     /// </summary> 
     private void InitializeComponent() 
     { 
      this.panel1 = new System.Windows.Forms.Panel(); 
      this.SuspendLayout(); 
      // 
      // panel1 
      // 
      this.panel1.Location = new System.Drawing.Point(49, 87); 
      this.panel1.Name = "panel1"; 
      this.panel1.Size = new System.Drawing.Size(200, 100); 
      this.panel1.TabIndex = 0; 
      // 
      // Form1 
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
      this.ClientSize = new System.Drawing.Size(284, 262); 
      this.Controls.Add(this.panel1); 
      this.Name = "Form1"; 
      this.Text = "Form1"; 
      this.ResumeLayout(false); 

     } 

     #endregion 

     private System.Windows.Forms.Panel panel1; 
    } 
} 

如果我創建另一種形式,但刪除了設計器文件,你會看到這種代碼將進入Form1.cs的代碼文件,而不是:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     private Panel panel1; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void InitializeComponent() 
     { 
      this.panel1 = new System.Windows.Forms.Panel(); 
      this.SuspendLayout(); 
      // 
      // panel1 
      // 
      this.panel1.Location = new System.Drawing.Point(101, 62); 
      this.panel1.Name = "panel1"; 
      this.panel1.Size = new System.Drawing.Size(200, 100); 
      this.panel1.TabIndex = 0; 
      // 
      // Form1 
      // 
      this.ClientSize = new System.Drawing.Size(284, 262); 
      this.Controls.Add(this.panel1); 
      this.Name = "Form1"; 
      this.ResumeLayout(false); 

     } 
    } 
} 

這不會造成任何傷害,但是讓代碼在不同文件中處理表單控件的代碼會使您的代碼看起來更精簡,更清晰,因此更易於導航和管理。

+1

我同意。部分課程看起來更清潔。這可以撤消(即以某種方式添加文件)? – john 2012-02-16 22:00:20

+2

是的,你可以添加一個名爲Form.Designer.cs的部分類,VS 2010將嵌套在Form1控件下。然後,您可以將代碼中的任何方法/設計實現從後面移回到該文件中。 – dscammell 2012-02-17 10:26:12