مشاركة عبر


كيفية القيام بما يلي: استهلاك الأحداث في Windows Forms Application

السيناريو الشائع في تطبيقات Windows Forms هو عرض نموذج مع عناصر تحكم، ثم تنفيذ إجراء محدد استناداً إلى عنصر التحكم الذي قام المستخدم بنقره. على سبيل المثال، يقوم عنصر التحكم Button بتحقيق حدث عند قيام المستخدم بالنقر فوقه في النموذج. بواسطة معالجة الحدث، يستطيع التطبيق الخاص بك تنفيذ منطق التطبيق المناسب للنقر فوق الزر.

للحصول على مزيد من المعلومات حول Windows Forms، راجع الشروع في العمل مع Windows Forms.

لمعالجة حد النقر فوق الزر في Windows Form

  1. قم إنشاء Windows Form الذي يحتوي على عنصر التحكم Button.

    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. قم بإضافة أسلوب معالج الحدث إلي الحدث Click لعنصر التحكم Button.

    button.Click += new EventHandler(this.Button_Click);
    
    AddHandler myButton.Click, AddressOf Me.Button_Click
    
    ملاحظةملاحظة

    سيقوم مصمم (مثل Visual Studio 2005) بتوصيل هذا الحدث لك بواسطة إنشاء تعليمات برمجية مشابهة للتعليمات البرمجية في هذا المثال.

مثال

يعالج مثال التعليمات البرمجية التالي الحدث Click الخاص بـ Button ليغير لون خلفية TextBox. العناصر بالأسود العريض توضح معالج الحدث و كيفية توصيله إلى الحدث Click الخاص بـ Button.

تمت كتابة التعليمات البرمجية في هذا المثال بدون استخدام مصمم مرئي (مثل 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

التحويل البرمجي للتعليمات البرمجية

قم بحفظ التعليمات البرمجية السابقة إلى ملف (بملحق .cs في حالة ملف C# و .vb في حالة Visual Basic 2005 ثم قم بالتحويل البرمجي والتنفيذ. على سبيل المثال، إذا تم تسمية ملف المصدر بـ 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.

راجع أيضًا:

المبادئ

المفوضون والأحداث

استهلاك الأحداث

رفع حدث

موارد أخرى

معالجة ورفع الأحداث