erste 3 Buchstaben/zahlen auslesen und wiedergeben?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Genesis.

    erste 3 Buchstaben/zahlen auslesen und wiedergeben?

    HI!

    ich möchte in meinem Programm eine combobox zur verfügung stellen, mit der man verschiedene bilder auswählen kann.

    jetzt benutze ich eine for next schleife um nach dem bild zu "suchen"

    1. problem

    ich habe die bilder mit 001 und so weiter benannt, jedoch ist der text der combobox 001name
    1. frage.

    ich kann nicht die ganzen bilder umbenennen und der text in der combobox ist wichtig(also der name)
    kann ich mit meiner for next schleife das bild zusammen "basteln"? oder kann der computer dann die bilder nicht finden da er den namen nicht zusammen ließt?

    also:

    VB.NET-Quellcode

    1. PictureBox1.Image = Nummer & ".jpg"

    (nummer ist die nummer des bildes z.b. 001)

    2. problem

    um die bilder zusammen zubasteln brauche ich natürlich nur die nummer 001


    2. frage

    kann ich wie mit StartsWith auch die ersten 3 zahlen auslesen und dann in einem string wiedergeben?


    danke schonmal :thumbsup:
    Genesis
    Also wenn ich das richtig verstanden habe, steht in der Combobox eine dreistellige Zahl und dahinter ein Name, z.B: 001Irgendwas.
    Und die Datei heisst dann "001.jpg".

    Wenn es immer eine dreistellige Zahl ist, kannst du diese mit Mid herausfinden:
    Dim strNummer As String = Mid("001Irgendwas", 1, 3)


    Anstatt "001Irgendwas" kommt dann einfach der Text aus der Combobox hin.
    Und den Dateinamen kannst du wie du bereits geschrieben hast, zusammenbasteln.

    Beim Laden des Bildes solltest du allerdings zuerst überprüfen, ob die Datei wirklich existiert.

    Gruss
    sandiro

    sandiro schrieb:

    Dim strNummer As String = Mid("001Irgendwas", 1, 3)

    Sorry, aber MID ist VB6 Code, in .NET heisst das jetzt Substring. Alle String Funktionen kannst Du übrigens hier nachlesen: String Funktionen

    VB.NET-Quellcode

    1. dim dieErsten3Zeichen as string="123.jpg".substring(0,3)


    Un noch eins: was Du in Deiner Combobox abspeicherst und wie das dann angezeigt wird, kann Du selber festlegen. Du musst nur Combobox.FormattingEnabled=True setzen , dann wird bei jedem Anzeigen das Format Event aufgerufen. Im folgenden Code wird der Name des Bildes 001.jpg in einer Combobox gespeichert, angezeigt wird jedoch 001 Bild. Das wird erreicht indem im Format Event mit Substring die ersten 3 Zeichen ausgelesen werden und dann Bild angehängt wird.

    VB.NET-Quellcode

    1. Option Strict On
    2. Class Form1
    3. Dim WithEvents comboBox1 As New ComboBox
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. Me.Controls.Add(comboBox1)
    6. ' combobox konfigurieren
    7. comboBox1.Dock = DockStyle.Fill
    8. ' formatierung erlaube
    9. comboBox1.FormattingEnabled = True
    10. ' combobox mit elementen füllen
    11. comboBox1.Items.Add("001.jpg")
    12. comboBox1.Items.Add("002.jpg")
    13. comboBox1.Items.Add("003.jpg")
    14. comboBox1.Items.Add("004.jpg")
    15. MessageBox.Show(comboBox1.Items(0).ToString)
    16. End Sub
    17. ' wird aufgerufen wenn ein Combobox Element formatiert werden soll
    18. Private Sub comboBox1_Format(ByVal sender As Object, ByVal e As System.Windows.Forms.ListControlConvertEventArgs) Handles comboBox1.Format
    19. e.Value = e.Value.ToString.Substring(0, 3) & " Bild"
    20. End Sub
    21. End Class
    danke schon mal!

    ich habs mal ausprobiert!

    ich poste erst noch den code:

    VB.NET-Quellcode

    1. Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
    2. Dim Nummer1 As String = ComboBox1.Text.Substring(0, 3) & ".jpg"
    3. Try
    4. Bild1.Image = Image.FromFile(Nummer1)
    5. Bild1.Refresh()
    6. Catch ex As Exception
    7. Bild1.Image = My.Resources.ErrorBild
    8. End Try
    9. End Sub


    ich habe das bild versucht mit Bild1.Image = Image.FromFile(Nummer1) zu erstellen.
    ich habe ebenfalls versucht es mit My.Resources._001 zu bekommen.

    liegt es vllt an dem _ nach resources? wenn ich es entverne kommt eine fehlermeldung!

    oder wende ich euren code falsch an?

    mfg danke für eure geduld :rolleyes:
    Was willst Du denn erreichen ? Du benutzt das Combobox1.TextChanged Event um Bilder auszuwählen. Dieses Event wird immer ausgelöst wenn Du in dem EingabeFeld der Combobox den Text änderst, also auch nur 1 einzigen Buchstaben tippst.

    Vermutlich ist das Eingabefled am Anfang leer, wenn Du dann tippst hat der Text nur 1 Buchstaben und damit gibt es Substring(0,3) leider nicht, da der Text keine 3 Buchstaben hat.
    nein in der Combobox steht am anfang "Auswahl" drin.

    ich möchte das ich mit ihr mehrere bilder auswählen kann. die bilder sind alle so aufgebaut: [Nummer] [ ] [Name]
    also z.B. 001 blabla

    ob es sich um das text changed event handelt ist egal ... es muss nur anschlagen wenn ich etwas anderes auswähle(ich habe auch schon das SelectedIndexChanged event ausprobiert)

    ich werde nie nur eine zahl eintippen deshalb ist es auch egal.

    auserdem gibt es keinen ausnamefehler, nur ein normaler fehler im texteditor.

    ich möchte nur die Nummer herausfiltern, da ich die bilder nicht so benannt habe wie sie in der combobox heißen.

    ich hoffte das ich die bilder auch auswählen kann in dem ich die nummer rausfilter und sie dann dazu benutze um die bilder aufzurufen.
    also so Bild1.Image = Image.FromFile(Nummer1)

    deswegen wollte ich Nummer1 ebenfalls als string definieren.


    kann man die bilder anderester aufrufen?

    wie gesagt der text der combobox ist: 001 name
    die passenden bilder haben den selben namen nur ohne den text also: 001

    gibt es keine möglichkeit dies zu tun?

    mfg genesis

    Genesis schrieb:

    gibt es keine möglichkeit dies zu tun?

    Viele Wege führen nach Rom ;)

    Es kommt hier nur darauf an, ob Du die Bilder in den Resourcen oder als File abgelegt hast. Nehmen wir mal File an:

    VB.NET-Quellcode

    1. Private Sub comboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboBox1.SelectedIndexChanged
    2. Dim value As String = comboBox1.SelectedItem.ToString
    3. ' muss mindestens länge 3 haben
    4. If value.Length < 3 Then Return
    5. ' pfad basteln
    6. Dim picturePath As String = value.Substring(0, 3) & ".jpg"
    7. MessageBox.Show(picturePath)
    8. ' auf existenz prüfen
    9. If IO.File.Exists(picturePath) Then
    10. Bild1.Image = Image.FromFile(picturePath)
    11. Else
    12. ' error Bild anzeigen
    13. End If
    14. End Sub