none
Listbox für Ereignis-Methoden zu einem Steuerelement RRS feed

  • Frage

  • Hallo Freunde des Programmierens,

    seit ein paar Jahren arbeite ich an Programmen mit interaktiver Benutzeroberfläche, meist mit Visual Basic und zuletzt Visual Studio 2019. Neuerdings arbeite ich mit dem eigentlich mächtigeren C#.
    In VB gibt es ein sehr nützliches Werkzeug: Wenn im Desgner doppelt auf ein Steuerelement geklickt wird, dann wird ein Listenfeld mit allen Steuerelementen angezeigt, das angeklickte selektiert - und: in einem zweiten Listenfeld die dazugehörigen Ereignismethoden; die, für die ich schon eine Methode geschrieben habe, herausgehoben. Damit kann ich dann sehr ökonomisch in meinem Programmcode navigieren und neue Ereignismethoden programmieren.
    Dieses  zweite Listenfeld wird bei C#  nicht angezeigt und ich habe nicht herausfinden können, wie sich das evtl. einrichten läßt.
    Frage also an Euch:

    Gibt es dieses Listenfeld für die Ereignisse auch in C# und wenn ja, wie läßt es sich in Visual Studio 2019 aktivieren?

    Fragt Euch freundlichst grüßend

    Peter Husch

    Freitag, 3. Dezember 2021 18:46

Antworten

  • Hi Peter,
    VB6 ist nicht VB.NET, genau wie VB6 nicht BASIC ist, auch wenn vile Schlüsselworte gleichlautend sind und meisten auch die gleich Funktio9nalität bewirken. Der wesentliche Unterschied zwischen VB6 und VB.NET ist die mächtige Laufzeitumgebung in der .NET-Welt. Der Frust entsteht nicht wegen minimalen Unterschieden in der Sprachsyntax, sondern wegen dem Aufwand für das Kennenlernen der Laufzeitumgebung und dem Umstieg von der in VB6 von vielen Programmierern praktizierten linearen Programmierung hin zur objektorientierten Programmierung  (OOP). Die gleichen Probleme (Aufwand) hast du aber auch beim Umstieg von VB6 zu C#.NET.

    Da es in C# kein Handles gibt, ist unklar, wie der Automatismus mit den DropDown-Boxes aus dem VB-Designer im C#-Designer funktionieren könnte. Außerdem würde mit den DropDown-Boxes die Funktionalität eingeschränkt werden, da damit keine Auswahl der Ereignisroutine möglich ist. Wenn beispielsweise eine Ereignisroutine mehrfach genutzt wird, wird dies in VB üblicherweise mit mehreren Handles in der gleichen Routine realisiert. In C# wird dagegen anstelle Handles jeweils eine separate Anweisung im Designer-File eingetragen.

    Apps für SmartPhones und Tablets kann du genau so auch in VB.NET entwickeln oder auch in COBOL.NET usw. Der gemeinsame Nenner ist die MSIL und die ist unabhängig von der genutzten Programmiersprache. Es gibt jedoch teilweise wenig Bedarf an VB.NET-Programmierung in einigen Bereichen, so dass es weniger oder auch keine Vorlagen dafür im Visual Studio gibt. Das bedeutet jedoch nicht, dass man für die Programmierung auch nicht VB.NET nutzen kann. Ggf. ist der Aufwand dann etwas größer, um die vorgefertigten Rahmenbedingung einer Vorlage nachzubilden.


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Sonntag, 5. Dezember 2021 07:58

Alle Antworten

  • Hi Peter,
    unklar ist, was an C#.NET mächtiger als in VB.NET sein soll. Vermutlich kennst du VB.NET nicht vollständig. Ich denke, dass ich beide Programmiersprachen sehr gut kenne, und mich würde interessieren, was was in C# mächtiger als in VB sein soll.

    Was du vom VB-Designer kennst (Ereignis-DropDown mit Erzeugen einer Ereignis-Methode mit automatisch generiertem Namen und Handles-Anweisung), kannst du in C# problemlos über das Properties-Fenster realisieren. Das in der Designer-Ansicht angeklickte Steuerelement wird in der ComboBox (im Properties-Fenster) selektiert und mit dem Pfeil-Icon werden alle möglichen Ereignisse angezeigt. Wenn du dann im gewünschten Ereignis einen Methodennamen eintippst, den es in der Klasse noch nicht gibt, wird der Methodenkörper mit diesem eingetragenen Methoden-Namen erzeugt und in der Designer-Datei der zugehörige "AddHandler" eingefügt, da es die Handles-Möglichkeit aus VB in C# nicht gibt.


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Freitag, 3. Dezember 2021 19:52
  • Hallo Peter, Danke für die prompte Antwort. Ich kenne und "liebte" einst VB hauptsächlich als VB6, also aus der Zeit vor der Wandlung zu VB.NET und war dann erst mal frustriert ... "Mächtiger" erscheint mir C# vor allem wegen der Möglichkeit Programm-Code auch für die Realisierung meiner Programme als Apps für Smartphone oder Tablets verwenden zu können. Soweit ich weiß geht das mit VB.NET-Code nicht, oder doch? Danke für die Hinweise zum Propertiers-Fenster, das hatte ich auch schon herausgefunden. Zusätzlich habe ich jetzt festgestellt, dass in C# die programmierten Ereignisse in demselben Listenfeld aufgeführt werden, in dem auch die Steuerelemente gelistet sind. In VB ist das aufgeteilt auf zwei Listenfelder, was ich eleganter und praktischer für die Navigation finde. Kann man das auch in C# so einstellen? fragt mit schönen Grüßen Peter Husch
    Samstag, 4. Dezember 2021 14:37
  • Hi Peter,
    VB6 ist nicht VB.NET, genau wie VB6 nicht BASIC ist, auch wenn vile Schlüsselworte gleichlautend sind und meisten auch die gleich Funktio9nalität bewirken. Der wesentliche Unterschied zwischen VB6 und VB.NET ist die mächtige Laufzeitumgebung in der .NET-Welt. Der Frust entsteht nicht wegen minimalen Unterschieden in der Sprachsyntax, sondern wegen dem Aufwand für das Kennenlernen der Laufzeitumgebung und dem Umstieg von der in VB6 von vielen Programmierern praktizierten linearen Programmierung hin zur objektorientierten Programmierung  (OOP). Die gleichen Probleme (Aufwand) hast du aber auch beim Umstieg von VB6 zu C#.NET.

    Da es in C# kein Handles gibt, ist unklar, wie der Automatismus mit den DropDown-Boxes aus dem VB-Designer im C#-Designer funktionieren könnte. Außerdem würde mit den DropDown-Boxes die Funktionalität eingeschränkt werden, da damit keine Auswahl der Ereignisroutine möglich ist. Wenn beispielsweise eine Ereignisroutine mehrfach genutzt wird, wird dies in VB üblicherweise mit mehreren Handles in der gleichen Routine realisiert. In C# wird dagegen anstelle Handles jeweils eine separate Anweisung im Designer-File eingetragen.

    Apps für SmartPhones und Tablets kann du genau so auch in VB.NET entwickeln oder auch in COBOL.NET usw. Der gemeinsame Nenner ist die MSIL und die ist unabhängig von der genutzten Programmiersprache. Es gibt jedoch teilweise wenig Bedarf an VB.NET-Programmierung in einigen Bereichen, so dass es weniger oder auch keine Vorlagen dafür im Visual Studio gibt. Das bedeutet jedoch nicht, dass man für die Programmierung auch nicht VB.NET nutzen kann. Ggf. ist der Aufwand dann etwas größer, um die vorgefertigten Rahmenbedingung einer Vorlage nachzubilden.


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Sonntag, 5. Dezember 2021 07:58
  • Hallo Peter,

    Danke für Deine ausführliche Antwort. Nach VB6 hab ich erst mal einen Ausflug zu Javascript, Java und JavaFX gemacht. Mit letzterem habe ich u.a. Uhren gestaltet, mit div. Animationen, z.B. eine Uhr, die mit der Zeit zerläuft wie auf den Dali-Bildern. Diese Uhren hab ich auf div Windows-PCs und Macs zum laufen bringen können. Die Arbeit mit JavaFX war sehr mühsam, vor allem, weil die mir bekannten IDEs (Eclipse und NetBeans) bei weitem nicht an die Funktionalität der Visual-Studio-IDE heranreichen. Oracle hat die Unterstützung für JavaFX eingestellt, so dass ich da in einer gewissen Sackgasse gelandet bin. Das war der Auslöser, mich für C# zu interessieren, wo ich einige Konzepte und Programmzeilen von JavaFX übernehmen kann.
    Mein Ziel ist es, u.a. diese Uhren auch auf Android-Tablets, Smartphones (incl. Iphone) und -Watches  zum laufen zu bringen. Und noch sehe ich nicht so klar, welchen Weg ich da am besten einschlage ...
    Vielleicht hast Du da noch den einen oder anderen Tip.

    mit einem schönen Gruß

    Peter H


    • Bearbeitet Peter Husch Sonntag, 5. Dezember 2021 13:08
    Sonntag, 5. Dezember 2021 12:17