tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
569
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    FWerewolf FWerewolf ist offline Mitglied
    Registriert seit
    Dec 2003
    Beiträge
    11
    Hi,

    Ich hab folgendes Problem :
    Ich hab ein Form, auf dem dynamisch beim Start icons erzeugt werden. Diese Icons sollen nun auf Doppelklick Details des Rechners anzeigen, den sie repräsentieren.

    Das Doubleclick Event ist zugefügt und geht auch, solange ich keine Parameter übergeben muß. ( Die Zahlen vorm Befehl sind Zeilenzahlen und dienen nur dazu, daß ich hier Bezug nehmen kann. Die sind im Originalcode natürlich nicht drin )
    ....
    1 this.dedialer[lauf].DoubleClick += new System.EventHandler(this.dialerdbclick(id));
    ...

    Die zugehörige Funktion soll nachher mehr machen, aber zuerst mal soll sie nur die übergebene ID ausgeben.

    2 private void dialerdbclick(string id)
    3 {
    4 MessageBox.Show(id.ToString());
    5 }

    Wenn ich es übersetze, krieg ich als Fehlermeldung :

    Methodenname wird erwartet. Markiert ist this.dialerdbclick(id) in der Zeile 1

    Kann mir da jemand bitte helfen und mir sagen, was da falsch dran ist ?

    Markus
     

  2. #2
    Avatar von erik s.
    erik s. erik s. ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Frankfurt (Hessen)
    Beiträge
    317
    Hi,

    dem EventHandler übergibst du lediglich den Methodenname, also dialerdbclick .. keine Klammern, wie beim Aufruf einer Methode und dementsprechend auch keine Parameter. Was genau willst denn machen ?

    MfG
     

  3. #3
    FWerewolf FWerewolf ist offline Mitglied
    Registriert seit
    Dec 2003
    Beiträge
    11
    Original geschrieben von erik s.

    Was genau willst denn machen ?
    beim Doppelklick auf eines der Icons soll ein neues Fenster aufgehen und genauere Infos anzeigen. Dazu muss das Fenster aber übergeben bekommen ( oder zumindest irgendwie rausbekommen ) auf welches Icon geklickt wurde.
    Da die Icons aber dynamisch angelegt werden, haben sind sie alle in einem Array.
    Also woher kann die Funktion, die beim Doppelklicken aufgerufen wird, wissen, welches Icon geklickt wurde ? Sie muß nur eine einzige Zahl kriegen.

    Markus
     

  4. #4
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hallo.

    Code :
    1
    
     private void dialerdbclick(string id)

    Das kann schon mal kein gültiger Eventhandler für ein DoubleClick Ereigniss sein.

    Der EventHandler delegate sieht immer folgendermassen aus:
    Code :
    1
    2
    3
    4
    
    public delegate void EventHandler(
       object sender,
       EventArgs e
    );

    Also muss deine Methode so aussehen
    Code :
    1
    
     private void dialerdbclick(object sender, EventArgs ea)

    sender ist ein Verweis auf das Objekt, welches das Event ausgelöst hat.

    Diese Daten sollten ausreichen um das Objekt zu identifizieren, und dann eben die entsprechenden Daten anzuzeigen, oder was auch immer.

    Mfg,
    Alex
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  5. #5
    IRQ IRQ ist offline Mitglied Silber
    Registriert seit
    Feb 2003
    Ort
    Schweiz
    Beiträge
    85
    Angenommen die Icons besitzen immer noch eine Eigenschaft Text, dann funktioniert das etwa so:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    this.dedialer[lauf].DoubleClick += new System.EventHandler(this.dialerdbclick);
     
    // sender enthält Informationen über den Aufrufer des Ereignisses
    // e enthält Informationen über das Ereignis selbst 
    private void dialerdbclick(object sender, System.EventArgs e)
    {
        // Um auf die Text Eigenschaft des Icons (sender) zugreifen zu können
        // müssen wir das sender-objekt explizit zum entsprechenden Objekttyp
        // casten (in meinem Fall ist es ein Button, den musst du durch die Klasse
        // ersetzen, die du für deine Icons verwendet hast).
        MessageBox.Show(  ((System.Windows.Forms.Button) sender).Text  );
    }

    Damit müsste es eigentlich gehen.
    Geändert von IRQ (27.01.04 um 15:01 Uhr)
     
    bye IRQ

  6. #6
    FWerewolf FWerewolf ist offline Mitglied
    Registriert seit
    Dec 2003
    Beiträge
    11
    Danke für beide Antworten.
    Ich teste das mal und sag Bescheid, ob es ging.

    Markus
     

  7. #7
    FWerewolf FWerewolf ist offline Mitglied
    Registriert seit
    Dec 2003
    Beiträge
    11
    mit den Veränderungen im Aufruf und
    MessageBox.Show( ((System.Windows.Forms.Button) sender).Name
    ( mit Anpassungen des Casts natürlich )
    ging es dann.

    Vielen Dank für die Hilfe

    Markus
     

Ähnliche Themen

  1. JNI Parameterübergabe
    Von Hilfloser im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 20.12.09, 20:07
  2. DLL Parameterübergabe
    Von Cromon im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 14.08.09, 19:25
  3. CGI Parameterübergabe ?
    Von ert18 im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 5
    Letzter Beitrag: 20.12.07, 10:12
  4. Parameterübergabe
    Von stephandziurla im Forum PHP
    Antworten: 3
    Letzter Beitrag: 16.08.05, 12:04
  5. parameterübergabe
    Von coolsummer im Forum XML Technologien
    Antworten: 1
    Letzter Beitrag: 22.09.04, 21:20