次の方法で共有


方法 : Windows フォーム アプリケーションでイベントを利用する

更新 : 2007 年 11 月

一般的に Windows フォーム アプリケーションでは、フォームにコントロールを表示し、ユーザーがクリックしたコントロールに応じて特定のアクションを実行します。たとえば、ユーザーがフォーム内の Button コントロールをクリックしたときに、このコントロールによってイベントが発生します。そのイベントを処理することで、アプリケーションでは、そのボタンのクリックに対して適切なアプリケーション ロジックを実行できます。

Windows フォームの詳細については、「Windows フォームについて」を参照してください。

Windows フォームのボタン クリック イベントを処理するには

  1. Button コントロールのある Windows フォームを作成します。

    private Button button;
    
    Private WithEvents myButton As Button
    
  2. Click イベントのデリゲート シグネチャに一致するイベント ハンドラを定義します。Click イベントでは、デリゲート型に EventHandler クラス、イベント データに EventArgs クラスをそれぞれ使用します。

    void Button_Click(object sender, EventArgs e)
    {...}
    
    Sub Button_Click(sender As Object, e As EventArgs)
    ...
    End Sub
    
  3. イベント ハンドラ メソッドを ButtonClick イベントに追加します。

    button.Click += new EventHandler(this.Button_Click);
    
    AddHandler myButton.Click, AddressOf Me.Button_Click
    
    0y0987sc.alert_note(ja-jp,VS.90).gifメモ :

    デザイナ (Visual Studio 2005 など) では、この例と同様のコードを生成して、イベント接続を行います。

使用例

次のコード例では、ButtonClick イベントを処理して TextBox の背景色を変更します。太字で示した要素は、イベント ハンドラと、そのイベント ハンドラを ButtonClick イベントに接続する方法を示しています。

この例のコードは、Visual Studio 2005 などのビジュアルなデザイナを使用せずに作成されており、プログラミングの不可欠の要素だけが含まれています。デザイナを使用した場合は、追加のコードも生成されます。

[C#]

using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
public class MyForm : Form 
{
   private TextBox box;
   private Button button;

   public MyForm() : base() 
   {  
      box = new TextBox();
      box.BackColor = System.Drawing.Color.Cyan;
      box.Size = new Size(100,100);
      box.Location = new Point(50,50);
      box.Text = "Hello";

      button = new Button();
      button.Location = new Point(50,100);
      button.Text = "Click Me";

      // To wire the event, create
      // a delegate instance and add it to the Click event.
      button.Click += new EventHandler(this.Button_Click);
      Controls.Add(box);
      Controls.Add(button);   
   }
   // The event handler.
   private void Button_Click(object sender, EventArgs e)    {      box.BackColor = System.Drawing.Color.Green;   }
   // The STAThreadAttribute indicates that Windows Forms uses the
   // single-threaded apartment model.
   [STAThreadAttribute]
   public static void Main(string[] args) 
   {
      Application.Run(new MyForm());
   }
}

[Visual Basic]

Option Strict On

Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Drawing

Public Class MyForm
   Inherits Form
   Private box As TextBox
   Private WithEvents myButton As Button

   Public Sub New()
      box = New TextBox()
      box.BackColor = System.Drawing.Color.Cyan
      box.Size = New Size(100, 100)
      box.Location = New Point(50, 50)
      box.Text = "Hello"

      myButton = New Button()
      myButton.Location = New Point(50, 100)
      myButton.Text = "Click Me"

      AddHandler myButton.Click, AddressOf Me.Button_Click

      Controls.Add(box)
      Controls.Add(myButton)
   End Sub

   ' The event handler.
   Private Sub Button_Click(sender As Object, e As EventArgs)      box.BackColor = System.Drawing.Color.Green   End Sub

   ' The STAThreadAttribute indicates that Windows Forms uses the
   ' single-threaded apartment model.
   <STAThreadAttribute()> _
   Public Shared Sub Main(args() As String)
      Application.Run(New MyForm())
   End Sub
End Class

コードのコンパイル方法

上記のコードをファイル (拡張子は C# ファイルの場合は .cs、Visual Basic 2005 の場合は .vb) に保存し、コンパイルし、実行します。たとえば、ソース ファイルの名前が WinEvents.cs (または WinEvents.vb) である場合は、次のコマンドを実行します。

csc /r:System.DLL /r:System.Windows.Forms.DLL /r:System.Drawing.DLL WinEvents.cs
vbc /r:System.DLL /r:System.Windows.Forms.DLL /r:System.Drawing.DLL WinEvents.vb

実行可能ファイルは、WinEvents.exe という名前になります。

参照

概念

イベントとデリゲート

イベントの利用

イベントの発生

その他の技術情報

イベントの処理と発生