Zum Inhalt springen

VB.NET dropdown?


Empfohlene Beiträge

Geschrieben

Hallo,

ich versuche gerade ein "DropDown" Menü zu machen, in dem von mehreren Instanzen ( abc1 ; abc2 ; abc3 ; abc4 ) der Inhalt der Felder ".name" angezeigt werden soll.

Nun meine Frage, welches Element nehme ich dafür? eine "ListBox" oder was? und wie bekomme ich den Verweis am sinnvollsten hin? Also die Instanzen beziehen sich auf Objekte in einer anderen Klasse (u. ebenfalls anderes integr. dokument).

Hoffe um eure hilfe :)

mfg

Christian, 19, Kassel

Geschrieben

Hey,

das klingt super!

Aber wie kriege ich nun die Informationen direkt nach der Instanziierung da rein? Gibts da irgendnen leichten kniff, oder müsste ich automatisch für jedes "dim abc1 as new abc("Kassel")" ein "cbo.Auswahl.add(abc1.name)" tippen, wäre doch dann recht undynamisch, falls ich beispielsweise abc57 erstelle, oder?

mfg

Christian, 19, Kassel

Geschrieben

Hallo,

Programmablauf.vb


Dim abc1 As New abc("Kassel")

Console.WriteLine(abc1.GetName)

nun steht in meiner anderen Klasse (abc) in der Datei abc.vb

    Public Function GetName() As String

        Return Me.sName

end function

    Sub New(ByVal nam As String)

        Me.sName = nam

    End Sub

Selbstverständlich habe ich noch andere Methoden, die meist über die Eigenschaften auf die Felder zugreifen. Ich würde nun gerne die anderen Felder angezeigt kriegen, allerdings aufgeteilt auf verschiedene Textboxen.

Also es sind 4 weitere Felder, die in Textboxen kommen sollen. Bei abc1 steht in denen bsp. (3;7;9;100;"Kassel") und bei abc2(4;9;2;39;"Berlin") und diese vorderen felder sollen dort hineingebracht werden. Theoretisch könnte ich ja nun einfach wieder eine "select-case" abfrage machen, aber dann würde ich ja den OOP-Ansatz verlieren, oder?

mfg

Christian, 19, Kassel

Geschrieben

ich würde die Objekte beim Erstellen in ein Dictionary(Of String, KLASSENNAME) packen, dann den Namen jedes Objektes in die DropDown-Box stecken.

Die DropDown-Box hat ein Event namens IndexChanged oder SelectedIndexChanged, darin dann auf das Dictionary zugreifen (dictObjekte("NAME_DER_IN_DER_DROPDOWNBOX_ANGEZEIGT_WIRD") gibt dann das Objekt zurück) und dann kannst du die Textboxen mit den Daten aus dem Objekt füllen.)

Geschrieben

Hey,

vielen dank. Klingt sehr interressant das mit dieser dictionary, werde es mir morgen mal anschauen, heute hab ich erstmal genug von vb ^^ Vielen dank für die mühe und die zeit!

mfg

Christian, 19, Kassel

Geschrieben

Hallo,

@Guybrush Threepwood: jetzt haste mich aber aufm falschen Zeh getroffen. Wie kann ich denn ".toString" überladen? habs mal mit "Public Overrides Function ToString() As String" sowie "Public Overrides Sub ToString()" probiert, und einen Fehler erhalten.

@derJan: die Lösung ist echt super! Habe da von mir erstmal reichlich was abgeschaut, vielen dank! Echt klasse! ;)

mfg

Christian, 19, Kassel

ps: kleine weitere Frage. ich möchte irgendwie vom zuvorigen Formular, an das nächste nachrichten übermitteln (ähnlich so einem php get/post) oder eben eine abfrage ".lastform" o.s. gibt es soetwas? Würde das nämlich gerne auswerten und dementsprechend gewisse Textboxen aktiv o. inaktiv setzen.

Geschrieben

Um "Nachrichten" an eine Form zu übergeben erstell in der Form Public Properties die du dann füllst. Etwa so


Dim frm As New frmFoo

frm.MyProperty = "Daten"

frm.Show()

ToString überladen: In deiner Daten-Klasse (MyObject.vb):

    Public Overrides Function ToString() As String

        Return Name()

    End Function

(Tipp: Mir zeigt VisualStudio nach Eingabe von "public overrides " eine Liste der möglichen zu überschreibenden Methoden an...)

Allerdings mag ich das direkte Ablegen von Objekten in der DropDown-Liste nicht so sehr, da ich in meinen Programmen Daten (Model) und Ansicht (View) trenne - die Form-Codedatei dient nur dem reinen Anzeigen der Daten, das Füllen übernimmt evtl. noch eine Controller-Klasse (googel mal nach dem MVC-Pattern...).

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...