2011-01-15 5 views

Antwort

2

Machen Sie den Ereignishandler in Form1 public und rufen Sie den Handler Form1.button_click direkt auf. Sie können Dummy-Parameter (diese, null) angeben, wenn Sie diese nicht im Handler verwenden.

Überdenken Sie Ihr Design. Im besten Fall sollten Ihre Event-Handler nur einige Funktionen einer anderen Ebene aufrufen, was tatsächlich "etwas bewirkt". Das funktioniert genauso gut von form1 oder von form2 oder von überall.

+3

Oder noch besser, machen Sie die Taste Kontrolle 'public' oder' friend' zugänglich, dann seine [ 'PerformClick' Methode] aufrufen (http://msdn.microsoft.com/en-us/library/system .windows.forms.button.performclick.aspx). Nur etwas besser als der direkte Aufruf von Event-Handler-Methoden. +1 für "überdenken Sie Ihr Design". –

+0

und Ihre +1 für PerformClick. Ich wusste das noch nicht. – user492238

+0

Es wird von der 'IButtonControl'-Schnittstelle bereitgestellt (die offensichtlich das' Button'-Steuerelement implementiert). Für die meisten anderen Steuerelemente oder sogar für andere Ereignisse ist sie nicht vorhanden. Das Aufrufen des Ereignishandlers "Click" einer Schaltfläche ist jedoch viel häufiger als in den anderen Fällen. –

0

Warum möchten Sie auf eine Schaltfläche auf Formular eins klicken. Haben Sie diesen Ansatz in Betracht gezogen?


Class form 1 
{ 

    button click() 
    { 
    using (form2 = new form 2) 
    { 
     if (form2.showdialog()==dialogresult.OK) 
     { 
      data odata = form2.Data; 

      //do work 
     } 
    } 
    } 
} 


Class form2 
{ 

public property Data 
{ 
    get; 
} 

    button click() 
    { 
    if (form valid) 
     { 
     this.dialogresult = dialogresult.ok; 
     } 
     else 
     { 
     this.dialogresult = dialogresult.cancel; 
     } 
     this.close(); 
    } 
} 
+0

Ich weiß nicht einmal was das * bedeutet *. Natürlich kompiliert es nicht, aber ich bin mir nicht einmal sicher, was es zeigen soll. Ruft der Setter für die Eigenschaft 'Data' die' Click'-Event-Handler-Methode der Schaltfläche auf? Weil das einfach falsch ist. –

+0

Ich ging davon aus, dass Sie ein zweites Formular öffnen, um Daten zu erhalten oder etwas zu arbeiten. dann die Daten in Formular 1 verwenden? Du hast nicht wirklich gesagt, was du in der Frage getan hast, also ist es offen für Interpretation! Ich würde das obige Beispiel verwenden, wenn Formular 1 ein Kundenauftragseingabebildschirm und Formular 2 ein neues Kundenformular ist. Klicken Sie auf Formular 1, um einen neuen Kunden einzugeben, Formular 2 übernimmt die Kundendetails, erstellt den Datensatz und die Dateneigenschaft ist der gespeicherte Kunde. Wenn Formular 2 gespeichert und nicht storniert wurde (dh das Dialogfeldergebnis auf OK gesetzt wurde), kann Formular 1 den Kunden des Kundenauftrags auf die Dateneigenschaft festlegen – WraithNath

Verwandte Themen