Frage

Gliederung

OK, ich habe das gegoogelt und erwarte bereits ein dickes Fett NEIN!! Aber ich dachte, ich sollte fragen, da ich weiß, dass manchmal das seltsame kleine Juwel des Wissens in den Köpfen der Menschen lauert ^_^

Ich arbeite mich durch einige Übungen in einem Buch zum Lernen, und diese spezielle Übung ist „Benutzersteuerung“.Ich habe ein Steuerelement zusammengeschustert und möchte das DefaultEvent dafür festlegen (ich habe dies bereits bei früheren Steuerelementen getan). Wenn ich also darauf doppelklicke, wird als Standardereignis das erstellt, was ich angegeben habe.

NOTIZ: Dies ist ein Standard-Benutzersteuerelement (.ascx). NICHT ein benutzerdefiniertes gerendertes Steuerelement.

Aktueller Code

Hier ist die Klassen- und Ereignisdefinition:

[System.ComponentModel.DefaultEvent("OKClicked")]
public partial class AddressBox : System.Web.UI.UserControl
{
    public event EventHandler OKClicked;

Aktuelles Ergebnis

Wenn ich nun auf das Steuerelement doppelklicke, während es sich auf einer ASPX-Seite befindet, wird Folgendes erstellt:

    protected void AddressBox1_Load(object sender, EventArgs e)
    {

    }

Nicht ganz das, was ich erwartet hatte!Also meine Frage:

Ist es möglich, ein DefaultEvent für ein UserControl zu definieren?Ist es ein Hack?Gibt es einen Grund, wenn es [nicht] unterstützt wird?


Randnotiz:Wie fügen wir Unterstriche in den Code ein?Es scheint mir nicht möglich zu sein, char einzufügen und zu entkommen?

War es hilfreich?

Lösung

Hier ist ein möglich Antwort, ohne zu testen (wie Martin es getan hat).

Im Reflektor sehen Sie, dass sich das DefaultEventAttribute vererben lässt.Im Reflektor sehen Sie, dass das Standardereignis der UserControl-Klasse auf das Load-Ereignis festgelegt ist.

Der mögliche Grund ist also, dass VS, obwohl Sie Ihr Benutzersteuerelement mit dem Standardereignis „OKClick“ dekorieren, möglicherweise immer noch denkt, dass das Standardereignis „Load“ ist, da es von UserControl geerbt wird, dessen Standardereignis „Load“ ist.

Nur eine grobe Vermutung darüber, was passieren könnte.

Andere Tipps

OK, ich habe mir das angeschaut: Von WebControl erben statt von UserControl.Alles hat gut funktioniert.

Sieht aus wie Darren Kopp holt sich dafür die Krone!Danke für die Eingabe!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top