.NET TIPS

コントロールのメンバ変数を自動生成させないようにするには?[VS 2005のみ、C#、VB]

デジタルアドバンテージ 遠藤 孝信
2006/07/21

 Visual Studio .NETやVisual Studio 2005でWindowsアプリケーションを作成する場合、フォームにコントロール(あるいはコンポーネント)を配置すると、そのコントロールをコードから操作するためのメンバ変数が自動的に作成される。

 しかし配置したすべてのコントロールに関してメンバ変数が必要であるとは限らない。中にはプロパティ・ウィンドウでプロパティを設定したり、イベント・ハンドラを追加したりするものの、コードからは一切参照しないようなコントロールもあり得る。

 Visual Studio 2005では、そのようなコントロールに関してメンバ変数を自動生成させないようにできる。これにはプロパティ・ウィンドウで、そのコントロールのGenerateMemberプロパティをFalseに設定すればよい(デフォルトはTrue)。この設定によりメンバ変数は自動生成されなくなり、IntelliSenseの一覧にも表示されなくなる。

自動生成されるコードのGenerateMemberプロパティ設定による違い

 次のコードは、フォームに2つのButtonコントロール(Button1とButton2)を配置し、Button2のGenerateMemberプロパティをFalseに設定した場合の、Form1.Designer.cs(VBの場合はForm1.Designer.vb)の内容である(このファイルはVisual Studio 2005のデザイナにより自動生成され、通常、開発者が手を触れる必要はない)。

namespace WindowsApplication1
{
  partial class Form1
  {
    ……省略……

    private void InitializeComponent()
    {
      System.Windows.Forms.Button Button2;
      this.Button1 = new System.Windows.Forms.Button();
      Button2 = new System.Windows.Forms.Button();
      ……省略……
      this.Controls.Add(Button2);
      this.Controls.Add(this.Button1);
      ……省略……
    }
    private System.Windows.Forms.Button Button1;
  }
}
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
  Inherits System.Windows.Forms.Form

  ……省略……

  <System.Diagnostics.DebuggerStepThrough()> _
  Private Sub InitializeComponent()
    Dim Button2 As System.Windows.Forms.Button
    Me.Button1 = New System.Windows.Forms.Button
    Button2 = New System.Windows.Forms.Button
    ……省略……
    Me.Controls.Add(Button2)
    Me.Controls.Add(Me.Button1)
    ……省略……
  End Sub

  Friend WithEvents Button1 As System.Windows.Forms.Button

End Class
2つのButtonコントロールを配置した場合のForm1.Designer.cs(Form1.Designer.vb)の内容(上:C#、下:VB)
2つのButtonコントロールのうち、Button2の方はGenerateMemberプロパティをFalseに設定に設定している。

 GenerateMemberプロパティをFalseに設定した「Button2」はメンバ変数が生成されず、InitializeComponentメソッド内でローカル変数としてのみ宣言されているのが確認できる。一方、「Button1」はForm1クラスのメンバ変数として宣言されており、このクラスは部分クラスであるため、Form1.cs(VBの場合はForm1.vb)で記述されているForm1クラスからもそれを参照できる。

 なお、GenerateMemberプロパティをTrueに設定している場合には、自動生成されるメンバ変数のアクセス修飾子をModifiersプロパティで指定できる。デフォルトはPrivate(VBの場合はFriend)である。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:Visual Studio 2005 処理対象:IDE

この記事と関連性の高い別の.NET TIPS
Windowsフォームのロード時に任意のコントロールへフォーカスを設定するには?
[ASP.NET]アプリケーション全体で共有するデータを扱うには?(静的メンバ編)
構文:定数(変更できないもの)を作るには?[C#/VB]
Visual Studio .NET 2003で作成したWindowsフォームを部分クラスの形式に変換するには?
Windowsフォームで簡単に画像を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間