Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
abgeleitetes Control Event Handler in Basisklasse wird nicht ausgeführt
a957m
myCSharp.de - Member



Dabei seit:
Beiträge: 254
Herkunft: Stuttgart

Themenstarter:

abgeleitetes Control Event Handler in Basisklasse wird nicht ausgeführt

beantworten | zitieren | melden

Hallo Kollgen,

folgendes Problem.

Ich habe ein Steuerelement mit zwei Buttons erstellt (mit Event Handler wenn der jeweilige Button geklickt wird). Dieses Steuerlement soll die Basis für weitere Steuerelement sein.

Leite ich nun ein weiteres Steuerlement von meinem Basis-Steuerlement ab, wird beim Klicken der Event-Handler nicht ausgeführt.

Die InitlaizeComponent Methode im Konstruktor wird ausgeführt, dort wird auch das Button Click Event mit der richtigen Methode verbunden.

Versteh nicht was da los ist?

Hat jemand schon mal was ähnliches erlebt.

Bin für jeden Tipp dankbar.

Tschüss
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Hast du mal ein Wenig Quellcode dazu?

Am besten natürlich, wo die Eventhandler gebunden werden.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
a957m
myCSharp.de - Member



Dabei seit:
Beiträge: 254
Herkunft: Stuttgart

Themenstarter:

beantworten | zitieren | melden

Hallo,

viel Quellcode kann ich da nicht liefern. Da ich eigentlich hauptsächlich mit dem Designer gearbeitet habe.

Vorgehen:

* Hab das User Control A erstellt, das zwei Buttons hat und jeweils einen Event-Handler
* von B hab ich ein weiteres User Control abgeleitet
* In meiner Form habe ich das USer Control B eingefügt
:( Beim Anklicken der Buttons auf User Control B wird der Exception Handler nicht ausgeführt.

Also eigentlich nichts codiert, nur Designer genutzt.
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Naja aber du musst doch Code haben, wo du auf die Button Events reagierst?
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
a957m
myCSharp.de - Member



Dabei seit:
Beiträge: 254
Herkunft: Stuttgart

Themenstarter:

beantworten | zitieren | melden

Haste natürlich recht ...

Das ist die Basis Klasse mit den Event Handler

public partial class uiGridZeile : td.rex.RexUILib.Steuerelemente.uiVariableBaseControl
    {
        public uiGridZeile()
            : base()
        {
            InitializeComponent();

            lbVarBez.DataBindings.Add("Text", m_value, "VariableBez");
        }

        public uiGridZeile(CVariable _variable)
            : base(_variable)
        {
            InitializeComponent();
            lbVarBez.DataBindings.Add("Text", m_value, "VariableBez");

            btnSet.Visible = !_variable.ReadOnly;
            btnSet.DataBindings.Add("Enabled", m_value, "Dirty");
        }

        private void btnGet_Click(object sender, EventArgs e)
        {
            OnValueGet();
        }

        private void btnSet_Click(object sender, EventArgs e)
        {
            OnValueSet();
        }
    }

Der Code für den Event Handler vom Designer generiert

// 
            // btnGet
            // 
            this.btnGet.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
            this.btnGet.Location = new System.Drawing.Point(405, 4);
            this.btnGet.Name = "btnGet";
            this.btnGet.Size = new System.Drawing.Size(42, 23);
            this.btnGet.TabIndex = 1;
            this.btnGet.Text = "Get";
            this.btnGet.UseVisualStyleBackColor = true;
            this.btnGet.Click += new System.EventHandler(this.btnGet_Click);
            // 
            // btnSet
            // 
            this.btnSet.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
            this.btnSet.Enabled = false;
            this.btnSet.Location = new System.Drawing.Point(447, 4);
            this.btnSet.Name = "btnSet";
            this.btnSet.Size = new System.Drawing.Size(42, 23);
            this.btnSet.TabIndex = 2;
            this.btnSet.Text = "Set";
            this.btnSet.UseVisualStyleBackColor = true;
            this.btnSet.Click += new System.EventHandler(this.btnSet_Click);

Das ist die abgeleitete Klasse, die zusätzlich noch eine Textbox hat

public partial class uiSimpleTextboxZeile : td.rex.RexUILib.Steuerelemente.ValueGrid.uiGridZeile
    {
        public uiSimpleTextboxZeile()
            : base()
        {
            InitializeComponent();
           
        }

        public uiSimpleTextboxZeile(CVariable _variable)
            : base(_variable)
        {
            m_bKeinEreignis = true;

            InitializeComponent();
            txtWert.DataBindings.Add("Text", m_value, "Wert");
                
            txtWert.Enabled = !_variable.ReadOnly;

            m_bKeinEreignis = false;
        }

        private void txtWert_TextChanged(object sender, EventArgs e)
        {
            if (m_bKeinEreignis) return;

            btnSet.Enabled = true;
        }
    }  

Vielen Dank für Deinen Einsatz.
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Im Click willst du also die OnValueSet(); Methode ausführen.

Die Methode ist im Basis- sowie im abgeleiteten Control vorhanden?
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
a957m
myCSharp.de - Member



Dabei seit:
Beiträge: 254
Herkunft: Stuttgart

Themenstarter:

beantworten | zitieren | melden

Hab ein Breakpoint auf diese Stelle gesetzt. Der wird nicht angesprungen.
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.296

beantworten | zitieren | melden

Naja, die Frage ist ja, wo hast du den Break Point?

Geht er in


private void btnSet_Click(object sender, EventArgs e)
        {
            OnValueSet();
        }


nicht rein, oder was passiert da?
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers