Problem mit Parameterübergabe in Dialog



  • Hi,
    ich habe einen Dialog, dem ich als Referenz ein Objekt einer eigenen Klasse übergebe. In dem Dialog ist ein Button, und ein Textinput. Falls der Button gedrückt wird, soll der Text aus dem Textinput dem Objekt zugewiesen werden. Wie kann ich in dem EventHandler des Buttons auf die Referenz des übergebenen Objektes zugreifen?

    public class CA : System.Windows.Forms.Form
    {
       private System.Windows.Forms.Button button;
       private System.Windows.Forms.TextBox textBox;
       public CA( ref CB b)
       {
          InitializeComponent();
       }
    
       private void InitializeComponent()
       {
          ...
          this.button.Click += new System.EventHandler(this.button_Click);
          ...      
          this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                  this.textBox,
                                  this.button});
          ...
       }
    
       private void buttonClose_Click(object sender, System.EventArgs e)
       {   
           b.SetEigenschaft1(this.textBox.Text); // WARUM funktioniert das nicht.
                                          // WARUM kann ich hier nicht auf 
                                          // das Objekt b zugreifen.
           this.Close();
       }
    
    }
    

    Für meine Klasse CB hab ich natürlich eine set und get methode und die sind auch public. Muss die definition der Klasse CA ein Objekt von CB enthalten? Ich dachte eigentlich die Referenz die übergeben wird reicht aus. Natürlich hab ich auch das Objekt der Klasse CB, das ich dem Konstruktor als Referenz übergebe vorher angelegt.
    Ich weiss hier echt nicht weiter. 😕



  • Ich weiß nicht ob das stimmt was ich schreibe, da ich noch ein C# Grünschnabel bin.

    Caste doch den ersten Parameter (Object sender) auf Die TextBox Klasse um, und dann einfach darauf zugreifen.

    private void buttonClose_Click(object sender, System.EventArgs e) 
       {    
           b.SetEigenschaft1((TextBox)sender.Text);
           this.Close(); 
       }
    

    Ich weiß nicht wie genau das mit dem casting läuft, aber ich habs mal in C++ marnier angedeutet.


Anmelden zum Antworten