Laden...

abgeleitetes Control Event Handler in Basisklasse wird nicht ausgeführt

Erstellt von a957m vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.817 Views
A
a957m Themenstarter:in
254 Beiträge seit 2007
vor 13 Jahren
abgeleitetes Control Event Handler in Basisklasse wird nicht ausgeführt

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

2.298 Beiträge seit 2010
vor 13 Jahren

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 |

A
a957m Themenstarter:in
254 Beiträge seit 2007
vor 13 Jahren

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.

2.298 Beiträge seit 2010
vor 13 Jahren

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 |

A
a957m Themenstarter:in
254 Beiträge seit 2007
vor 13 Jahren

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.

2.298 Beiträge seit 2010
vor 13 Jahren

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 |

A
a957m Themenstarter:in
254 Beiträge seit 2007
vor 13 Jahren

Hab ein Breakpoint auf diese Stelle gesetzt. Der wird nicht angesprungen.

2.298 Beiträge seit 2010
vor 13 Jahren

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 |