SORU
29 NİSAN 2009, ÇARŞAMBA


Anlayış olayları ve olay işleyicileri C#

Olayların amacı, özellikle kullanıcı arayüzleri oluşturma bağlamında anlıyorum. Bu bir olay oluşturmak için: prototip olduğunu düşünüyorum

public void EventName(object sender, EventArgs e);

Olay işleyicileri, neden ve nasıl oluşturmak için? gerekli ne yapıyorlar

CEVAP
29 NİSAN 2009, ÇARŞAMBA


Olay işleyicileri anlamak için delegates anlamak gerekir. C#, bir yöntem için bir işaretçi olarak bir temsilci (veya referans) düşünebilirsiniz. Bu işaretçinin değeri etrafında geçti olabilir, çünkü yararlıdır.

Bir temsilci Merkez kavramı imza veya onun şekli. (1) dönüş tipi ve (2) Giriş bağımsız değişkenleri. Eğer bir temsilci yaratıyoruz örneğin, void MyDelegate(object sender, EventArgs e), iade void, sadece yöntemleri üzerine gelin ve object EventArgs alabilir. Biraz kare bir delik bir kare peg. Bu yöntemler temsilci olarak imza veya şekil, aynı şeyi söylüyoruz.

Yani bilerek nasıl için başvuru oluşturmak için bir yöntem, hadi dersin amacı olaylar: istiyoruz neden bazı çalıştırılacak kodu ne zaman bir şey olur, başka bir yerde bir sistem ya da "tanıtıcı olay". Bunu yapmak için, idam istiyoruz kodu için özel yöntemler oluşturuyoruz. Olay ve Yöntem arasındaki tutkal yürütülecek delegeler. Olay içten bir "olay ortaya çıktığında çağrı yöntemleri için işaretçiler.* listesini saklamak gerekir Tabii ki, bir yöntem çağrısı yapabilmek için, geçmek için ne bilmemiz gerekiyor! "Olay ve çağrılacak belirli yöntemler arasında. sözleşmeli olarak temsilci kullanıyoruz

Varsayılan EventHandler (ve Benzerleri) temsil ederyöntemi belirli bir şekil(yine/-EventArgs nesnesi) geçersiz. Bir olay bildirmek, diyorsunyöntem şekli olan(EventHandler) bu olay, bir temsilci belirterek çağırır:

//This delegate can be used to point to methods
//which return void and take a string.
public delegate void MyEventHandler(string foo);

//This event can cause any method which conforms
//to MyEventHandler to be called.
public event MyEventHandler SomethingHappened;

//Here is some code I want to be executed
//when SomethingHappened fires.
void HandleSomethingHappened(string foo)
{
    //Do some stuff
}

//I am creating a delegate (pointer) to HandleSomethingHappened
//and adding it to SomethingHappened's list of "Event Handlers".
myObj.SomethingHappened  = new MyEventHandler(HandleSomethingHappened);

(*Bu olaylar anahtarıdır .NET ve peeling uzakta "" - bir olay gerçekten yorganın altında, aynı yöntemleri liste sadece "şekil". sihirli Liste olayı yaşadığı yerde saklanır. Olay olduğunda "" gerçekten sadece "yöntemleri bu liste üzerinden gidin ve her biri, parametre olarak bu değerleri kullanarak" oluşturuldu. Bir olay işleyicisi atama denilen bu yöntem listesi) yöntemi ekleyerek daha güzel, daha kolay bir yol.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autocar

    Autocar

    11 Mart 2006
  • FD2097

    FD2097

    21 HAZİRAN 2009
  • PaulGBelliveau

    PaulGBellive

    5 Mart 2009