Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

Wie und wo erstellst du denn die Objekte?

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

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.)

Hier mal als VS2005-Projekt, kurz runtergetippt, keine Garantie auf vollständige Funktionalität, aber das Prinzip sollte klar werden...

Objekte in DropDownBox.zip

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

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.

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...).

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.