2009-03-06 6 views

Répondre

8

Je suggère de lire un tutoriel sur le sujet.

Fondamentalement, vous déclarez un type délégué:

public delegate void MyDelegate(string message); 

Ensuite, vous pouvez assigner et appeler directement:

MyDelegate = SomeFunction; 
MyDelegate("Hello, bunny"); 

Ou vous créez un événement:

public event MyDelegate MyEvent; 

Ensuite, vous pouvez ajouter un gestionnaire d'événements de l'extérieur comme ceci:

SomeObject.MyEvent += SomeFunction; 

Visual Studio est utile avec ceci. Après avoir entré le + =, appuyez simplement sur l'onglet tabulation et cela créera le gestionnaire pour vous.

Ensuite, vous pouvez déclencher l'événement à l'intérieur de l'objet:

if (MyEvent != null) { 
    MyEvent("Hello, bunny"); 
} 

C'est l'utilisation de base.

+0

+1, vous avez juste oublié le mot-clé "délégué" sur le premier code ligne. – ybo

+0

Oups. Merci de m'avoir signalé. – OregonGhost

1
public delegate void testDelegate(string s, int i); 

private void callDelegate() 
{ 
    testDelegate td = new testDelegate(Test); 

    td.Invoke("my text", 1); 
} 

private void Test(string s, int i) 
{ 
    Console.WriteLine(s); 
    Console.WriteLine(i.ToString()); 
} 
1

Pour une réponse large, cochez cette case article par mohamad halabi. Pour plus courte réponse vérifier cet exemple légèrement modifié du c:/Program Files/Microsoft Visual Studio 9.0/samples/1033/dossier ...

using System; 
using System.IO; 


namespace DelegateExample 
{ 
    class Program 
    { 
    public delegate void PrintDelegate (string s); 

    public static void Main() 
    { 
     PrintDelegate delFileWriter = new PrintDelegate (PrintFoFile); 
     PrintDelegate delConsoleWriter = new PrintDelegate (PrintToConsole); 
     Console.WriteLine ("PRINT FIRST TO FILE by passing the print delegate -- DisplayMethod (delFileWriter)"); 

     DisplayMethod (delFileWriter);  //prints to file 
     Console.WriteLine ("PRINT SECOND TO CONSOLE by passing the print delegate -- DisplayMethod (delConsoleWriter)"); 
     DisplayMethod (delConsoleWriter); //prints to the console 
     Console.WriteLine ("Press enter to exit"); 
     Console.ReadLine(); 

    } 

    static void PrintFoFile (string s) 
    { 
     StreamWriter objStreamWriter = File.CreateText(AppDomain.CurrentDomain.BaseDirectory.ToString() + "file.txt"); 
     objStreamWriter.WriteLine (s); 
     objStreamWriter.Flush(); 
     objStreamWriter.Close(); 
    } 


    public static void DisplayMethod (PrintDelegate delPrintingMethod) 
    { 
     delPrintingMethod("The stuff to print regardless of where it will go to") ; 
    } 

    static void PrintToConsole (string s) 
    { 
     Console.WriteLine (s);  
    } //eof method 
    } //eof classs 
} //eof namespace 
Questions connexes