none
zahl soll in ihre ziffern geteilt werden RRS feed

  • Frage

  • hey ho

     

    ich möchte ein kleines programm mit vb 2010 schreiben, welches den benutzer erlaubt eine zahl in ein textbox-feld einzugeben  diese zahl kann bis zu 4 ziffern besitzen 

    wenn es weniger ziffern sind werden vor die zahl die entsprechende anzahl nullen gesetzt

            If TextBox1.Text.Length = (4) Then
                TextBox2.Text = TextBox1.Text
            ElseIf TextBox1.Text.Length = (3) Then
                TextBox2.Text = 0 & TextBox1.Text
            ElseIf TextBox1.Text.Length = (2) Then
                TextBox2.Text = 00 & TextBox1.Text
            ElseIf TextBox1.Text.Length = (1) Then
                TextBox2.Text = 000 & TextBox1.Text
            End If

     

    z.B.  71 wird zu 0071

     

    nun zu meinem problem:

    jetzt möchte ich diese zahl wieder zerlegen

    jede ziffer soll in ein label geschrieben werden

    Beispiel:

     Textbox1.Text = 4271 

    ziffer 4 kommt in label1

    ziffer 2 in label2

    usw.

     

     

    hoffe ihr versteht es 

    ralle

     

    Donnerstag, 16. September 2010 13:53

Antworten

  • Hallo,

    ich möchte ein kleines programm mit vb 2010 schreiben,
    welches den benutzer erlaubt eine zahl in ein textbox-feld
    einzugeben diese zahl kann bis zu 4 ziffern besitzen

    Also sollte die Textbox eine Eingabe von max. 4 Zeichen zulassen:

        TextBox1.MaxLength = 4

    wenn es weniger ziffern sind werden vor die zahl
    die entsprechende anzahl nullen gesetzt

    Da man in die Textbox nicht nur Ziffern, sondern auch
    andere Zeichen eingeben kann, wäre es sinnvoll, erst
    mal zu prüfen, ob in die Textbox wirklich nur Ziffern
    eingegeben worden sind.

        Dim Value as Integer
        If Integer.TryParse(TextBox1.Text, Value) Then
            ' TextBox1 enthält eine gültige Zahl (integer)
        end if

    If TextBox1.Text.Length = (4) Then
    TextBox2.Text = TextBox1.Text
    ElseIf TextBox1.Text.Length = (3) Then
    TextBox2.Text = 0 & TextBox1.Text
    ElseIf TextBox1.Text.Length = (2) Then
    TextBox2.Text = 00 & TextBox1.Text
    ElseIf TextBox1.Text.Length = (1) Then
    TextBox2.Text = 000 & TextBox1.Text
    End If

    z.B. 71 wird zu 0071

    Das kannst Du auch deutlich einfacher haben.
    Mit

        TextBox1.Text = TextBox1.Text.PadLeft(4, "0"c)

    wird die in TextBox1 stehende Zahl mit führenden
    Nullen auf 4 stellen aufgefüllt.


    nun zu meinem problem:
    jetzt möchte ich diese zahl wieder zerlegen
    jede ziffer soll in ein label geschrieben werden

    Beispiel:
    Textbox1.Text = 4271

    ziffer 4 kommt in label1
    ziffer 2 in label2
    usw.

    Kopiere nachfolgendes Beispiel in ein leeres Formmodul (Form1.vb)

    ' / Beginn Code Form1.vb
    Public Class Form1
        Private WithEvents Button1 As Button
        Private WithEvents TextBox1 As TextBox

        Private Sub Form1_Load _
                (ByVal sender As System.Object, _
                 ByVal e As System.EventArgs _
                ) Handles MyBase.Load

            CreateControls()
            Button1.Enabled = False
        End Sub

        Private Sub CreateControls()
            ' Textbox, Button u. 4 Labels erzeugen

            TextBox1 = New TextBox
            With TextBox1
                .Name = "TextBox1"
                .Font = New Font("Arial", 14)
                .MaxLength = 4

                .SetBounds _
                        (10, 10, _
                         Me.ClientSize.Width - 65, _
                         .Height)

                .Anchor = _
                        AnchorStyles.Left Or _
                        AnchorStyles.Top Or _
                        AnchorStyles.Right

            End With
            Me.Controls.Add(TextBox1)

            Button1 = New Button
            With Button1
                .Name = "Button1"
                .Font = New Font("Arial", 10)

                .SetBounds _
                        (Me.ClientSize.Width - 50, _
                         10, 40, _
                         TextBox1.Height)

                .Text = "ok"

                .Anchor = _
                        AnchorStyles.Top Or _
                        AnchorStyles.Right

            End With
            Me.Controls.Add(Button1)

            Dim i As Integer
            Dim Top As Integer = TextBox1.Bottom + 20
            Dim Lbl As Label = Nothing
            For i = 1 To 4
                Lbl = New Label
                With Lbl
                    .Name = "Label" & i.ToString
                    .Font = TextBox1.Font
                    .AutoSize = True
                    .Location = New Point(10, Top)
                    .Text = .Name

                    Top = .Bottom + 10
                End With
                Me.Controls.Add(Lbl)
            Next

            Me.ClientSize = New Size(350, Lbl.Bottom + 15)
        End Sub

        Private Sub TextBox1_TextChanged _
                (ByVal sender As Object, _
                 ByVal e As System.EventArgs _
                ) Handles TextBox1.TextChanged

            ' Button1 nur dann freigeben, wenn Textbox1.Text
            ' ein gültige Zahl (Integer) darstellt.

            Dim Value As Integer

            Button1.Enabled = _
                Integer.TryParse(TextBox1.Text, Value)

        End Sub

        Private Sub Button1_Click _
                (ByVal sender As Object, _
                 ByVal e As System.EventArgs _
                ) Handles Button1.Click

            ' Textbox mit führenden Nullen auf 4 Stellen auffüllen
            TextBox1.Text = TextBox1.Text.PadLeft(4, "0"c)

            ' Ziffer aus der Textbox in den Labels anzeigen
            Dim i As Integer
            For i = 1 To 4

                Me.Controls("Label" & i.ToString).Text = _
                    TextBox1.Text.Substring(i - 1, 1)

            Next
        End Sub
    End Class
    ' \\\ E N T E

    Nach dem Programmstart siehst Du die Form1 mit
    einer Textbox einem Button (ok) und 4 Labels.

    Der Button wird erst freigegeben, wenn in die Textbox
    eine gültige Zahl (integer) eingegeben worden ist.

    Mit einem Mausklick auf den Button (ok) wird die in der
    Textbox stehende Zahl mit führenden Nullen auf 4 Stellen
    aufgefüllt und dann werden die 4 Ziffern in den 4 Labels
    angezeigt.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Donnerstag, 16. September 2010 15:26
  • Hallo,

    so einiges von Peter Götz Erläuterungen sollte hängen geblieben sein oder das Buch Aufklärung gebracht haben.

    Und das wäre vor allem: Zunächst solltest sicherstellen, dass es überhaupt eine Zahl ist.
    Danach kannst Du die Zahlenformate von .NET zur Darstellung nutzen:

        Dim value As Integer
        If Integer.TryParse(Me.TextBox1.Text, value) Then
          Me.TextBox1.Text = value.ToString("0000").Substring(0, 4)
        Else
          Me.TextBox1.Text = "Eine Zahl bitte!"
        End If
    
    

    Ist es Dir "schnuppe", ob alles Ziffern sind geht auch:

        ' Oder auf 4 Zeichen 
        Me.TextBox1.Text = Me.TextBox1.Text.PadLeft(4, "0"c).Substring(0, 4)
    
    

    dort wird PadLeft verwendet und Substring beseitigt alles was über die 4 Zeichen hinausgeht.

    Gruß Elmar

     

    Donnerstag, 16. September 2010 15:16

Alle Antworten

  • ich kenn mich in VB ned aus aber ich würd, den sting in ne int convertieren und dann:

    ziffer = zahl /10;

    zahl = zahl % 10;

    und dass dann in ne schleife packen die solange durch läuft wie zahl >= 10 ist, dadurch kommst an die einzelnene stellen.

    Hoffe das hilft

    grüße Michael

    Donnerstag, 16. September 2010 14:30
  • mhm ok

    aber gibt es nicht auch eine eigeschaft die z:b. die erste ziffer rauspikt?

    es gibt ja auch das es die ziffern zählt z.B.

    TextBox1.Text.Length

    Donnerstag, 16. September 2010 14:58
  • Hallo,

    so einiges von Peter Götz Erläuterungen sollte hängen geblieben sein oder das Buch Aufklärung gebracht haben.

    Und das wäre vor allem: Zunächst solltest sicherstellen, dass es überhaupt eine Zahl ist.
    Danach kannst Du die Zahlenformate von .NET zur Darstellung nutzen:

        Dim value As Integer
        If Integer.TryParse(Me.TextBox1.Text, value) Then
          Me.TextBox1.Text = value.ToString("0000").Substring(0, 4)
        Else
          Me.TextBox1.Text = "Eine Zahl bitte!"
        End If
    
    

    Ist es Dir "schnuppe", ob alles Ziffern sind geht auch:

        ' Oder auf 4 Zeichen 
        Me.TextBox1.Text = Me.TextBox1.Text.PadLeft(4, "0"c).Substring(0, 4)
    
    

    dort wird PadLeft verwendet und Substring beseitigt alles was über die 4 Zeichen hinausgeht.

    Gruß Elmar

     

    Donnerstag, 16. September 2010 15:16
  • Hallo,

    ich möchte ein kleines programm mit vb 2010 schreiben,
    welches den benutzer erlaubt eine zahl in ein textbox-feld
    einzugeben diese zahl kann bis zu 4 ziffern besitzen

    Also sollte die Textbox eine Eingabe von max. 4 Zeichen zulassen:

        TextBox1.MaxLength = 4

    wenn es weniger ziffern sind werden vor die zahl
    die entsprechende anzahl nullen gesetzt

    Da man in die Textbox nicht nur Ziffern, sondern auch
    andere Zeichen eingeben kann, wäre es sinnvoll, erst
    mal zu prüfen, ob in die Textbox wirklich nur Ziffern
    eingegeben worden sind.

        Dim Value as Integer
        If Integer.TryParse(TextBox1.Text, Value) Then
            ' TextBox1 enthält eine gültige Zahl (integer)
        end if

    If TextBox1.Text.Length = (4) Then
    TextBox2.Text = TextBox1.Text
    ElseIf TextBox1.Text.Length = (3) Then
    TextBox2.Text = 0 & TextBox1.Text
    ElseIf TextBox1.Text.Length = (2) Then
    TextBox2.Text = 00 & TextBox1.Text
    ElseIf TextBox1.Text.Length = (1) Then
    TextBox2.Text = 000 & TextBox1.Text
    End If

    z.B. 71 wird zu 0071

    Das kannst Du auch deutlich einfacher haben.
    Mit

        TextBox1.Text = TextBox1.Text.PadLeft(4, "0"c)

    wird die in TextBox1 stehende Zahl mit führenden
    Nullen auf 4 stellen aufgefüllt.


    nun zu meinem problem:
    jetzt möchte ich diese zahl wieder zerlegen
    jede ziffer soll in ein label geschrieben werden

    Beispiel:
    Textbox1.Text = 4271

    ziffer 4 kommt in label1
    ziffer 2 in label2
    usw.

    Kopiere nachfolgendes Beispiel in ein leeres Formmodul (Form1.vb)

    ' / Beginn Code Form1.vb
    Public Class Form1
        Private WithEvents Button1 As Button
        Private WithEvents TextBox1 As TextBox

        Private Sub Form1_Load _
                (ByVal sender As System.Object, _
                 ByVal e As System.EventArgs _
                ) Handles MyBase.Load

            CreateControls()
            Button1.Enabled = False
        End Sub

        Private Sub CreateControls()
            ' Textbox, Button u. 4 Labels erzeugen

            TextBox1 = New TextBox
            With TextBox1
                .Name = "TextBox1"
                .Font = New Font("Arial", 14)
                .MaxLength = 4

                .SetBounds _
                        (10, 10, _
                         Me.ClientSize.Width - 65, _
                         .Height)

                .Anchor = _
                        AnchorStyles.Left Or _
                        AnchorStyles.Top Or _
                        AnchorStyles.Right

            End With
            Me.Controls.Add(TextBox1)

            Button1 = New Button
            With Button1
                .Name = "Button1"
                .Font = New Font("Arial", 10)

                .SetBounds _
                        (Me.ClientSize.Width - 50, _
                         10, 40, _
                         TextBox1.Height)

                .Text = "ok"

                .Anchor = _
                        AnchorStyles.Top Or _
                        AnchorStyles.Right

            End With
            Me.Controls.Add(Button1)

            Dim i As Integer
            Dim Top As Integer = TextBox1.Bottom + 20
            Dim Lbl As Label = Nothing
            For i = 1 To 4
                Lbl = New Label
                With Lbl
                    .Name = "Label" & i.ToString
                    .Font = TextBox1.Font
                    .AutoSize = True
                    .Location = New Point(10, Top)
                    .Text = .Name

                    Top = .Bottom + 10
                End With
                Me.Controls.Add(Lbl)
            Next

            Me.ClientSize = New Size(350, Lbl.Bottom + 15)
        End Sub

        Private Sub TextBox1_TextChanged _
                (ByVal sender As Object, _
                 ByVal e As System.EventArgs _
                ) Handles TextBox1.TextChanged

            ' Button1 nur dann freigeben, wenn Textbox1.Text
            ' ein gültige Zahl (Integer) darstellt.

            Dim Value As Integer

            Button1.Enabled = _
                Integer.TryParse(TextBox1.Text, Value)

        End Sub

        Private Sub Button1_Click _
                (ByVal sender As Object, _
                 ByVal e As System.EventArgs _
                ) Handles Button1.Click

            ' Textbox mit führenden Nullen auf 4 Stellen auffüllen
            TextBox1.Text = TextBox1.Text.PadLeft(4, "0"c)

            ' Ziffer aus der Textbox in den Labels anzeigen
            Dim i As Integer
            For i = 1 To 4

                Me.Controls("Label" & i.ToString).Text = _
                    TextBox1.Text.Substring(i - 1, 1)

            Next
        End Sub
    End Class
    ' \\\ E N T E

    Nach dem Programmstart siehst Du die Form1 mit
    einer Textbox einem Button (ok) und 4 Labels.

    Der Button wird erst freigegeben, wenn in die Textbox
    eine gültige Zahl (integer) eingegeben worden ist.

    Mit einem Mausklick auf den Button (ok) wird die in der
    Textbox stehende Zahl mit führenden Nullen auf 4 Stellen
    aufgefüllt und dann werden die 4 Ziffern in den 4 Labels
    angezeigt.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Donnerstag, 16. September 2010 15:26
  • ok gut danke

    also setzt ich dort nen tryparse rein


    mir ist auch eben noch eine andere lösung eingefallen (...)

     

    beispiel:

    die zahl 467 wirrd eingebenben

    es zählt die zeichen

    wenn es 3 zeichen sind wird durch 100 dividiert

    also wäre das ergebniss 4.67

    dann wäre z.B. Label2.text = 4.67

    da ich nur eine ganze zahl möchte  setzte ich noch ein int davor

    also label2.text = Int(label2.Text)

    jetzt habe ich die zahl 4

    die zahl 4 wird in das label10 kopiert

    jetzt füge ich noch 2 nullen hinzu und erhalte 400

    jetzt subtrahiere ich von 467 die zahl 400 und erhalte 67 

    ...

    die ganze zahl ist 6

    sie wird in das label11 kopiert

    die zahl 7 bleibt üprig

    diese wird wiederum in das label 12 kopiert

     

     

    dazu brauch ich dann

        TextBox1.Text = TextBox1.Text.PadLeft(4, "0"c)

    nicht

     

    aber jetzt weiß ich mehr

     

    ralle

     

     

    Donnerstag, 16. September 2010 15:45
  • Hallo,

    also setzt ich dort nen tryparse rein

    Damit weisst Du erst mal, ob wirklich eine Zahl
    eingegeben worden ist.

    mir ist auch eben noch eine andere lösung eingefallen (...)

    beispiel:
    die zahl 467 wirrd eingebenben
    es zählt die zeichen
    wenn es 3 zeichen sind wird durch 100 dividiert

    also wäre das ergebniss 4.67
    dann wäre z.B. Label2.text = 4.67
    da ich nur eine ganze zahl möchte setzte ich noch ein int davor
    also label2.text = Int(label2.Text)
    jetzt habe ich die zahl 4
    die zahl 4 wird in das label10 kopiert
    jetzt füge ich noch 2 nullen hinzu und erhalte 400
    jetzt subtrahiere ich von 467 die zahl 400 und erhalte 67
    ...
    die ganze zahl ist 6
    sie wird in das label11 kopiert
    die zahl 7 bleibt üprig
    diese wird wiederum in das label 12 kopiert

    Au weia,
    ... von hinten durch die Brust ins Auge.
    Oder... warum einfach wenn es umständlich auch geht.

    dazu brauch ich dann

    TextBox1.Text = TextBox1.Text.PadLeft(4, "0"c)

    nicht

    Du willst doch nicht ernsthaft einen ganzen Roman
    an wackligem Code schreiben, wenn sich das Ganze
    mit einer einzigen, sauberen und stabil arbeitenden
    Codezeile lösen lässt.


    aber jetzt weiß ich mehr

    Ich fürchte, Du hast mein vorangegangenes Posting
    nicht wirklich gelesen, resp. den dort gezeigten Code
    nicht ausprobiert oder zumindest nicht wirklich verstanden.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Donnerstag, 16. September 2010 16:05
  • dude

     

    ich habe ihn kurz überflogen hab meinen teil gepostet und bin grad dabei deinen code umzusetzten

    habs vlt etwas komisch vormuliert aber nunja... (also mein vorheriger post)

     

     

     

     

    Donnerstag, 16. September 2010 16:09
  • Hallo,

    ich habe ihn kurz überflogen

    ... damit wirst Du den Code sicher nicht verstehen.

    hab meinen teil gepostet und bin grad dabei deinen
    code umzusetzten

    Du solltest den Code besser erst mal unverändert
    in ein leeres Formmodul kopieren und ablaufen lassen
    und dabei Schritt für Schritt ansehen und dabei hoffentlich
    auch verstehen was dieser Code warum macht.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Donnerstag, 16. September 2010 16:15
  • ok nochmal ich habe ihn überflogen  dann meinen text gepostet und bin dann deinen anweisungen gefolgt (neues projekt  code rein)

    seh ihn mir gerade an (also den code)

    Donnerstag, 16. September 2010 16:17
  • nochmal kurz was:

     

    ich habe einen

    button

    Listbox

    Textbox

     

    ich möchte das jedes element aus der listbox in die textbox übertragen wird wenn der button gedrückt wurde

    doch wenn ich den button gedrückt habe bleibt die textbox leer :-(

     

    mein ansatz ist glaub nicht wirklich was

            For Each item As String In ListBox1.Items
                TextBox1.Text = item & vbCrLf

            Next

     

    ralle

    Freitag, 24. September 2010 17:19
  • Hallo,

    nochmal kurz was

    ich habe einen

    button
    Listbox
    Textbox

    ich möchte das jedes element aus der listbox in die
    textbox übertragen wird wenn der button gedrückt wurde

    doch wenn ich den button gedrückt habe bleibt die textbox leer :-(

    mein ansatz ist glaub nicht wirklich was

    For Each item As String In ListBox1.Items
    TextBox1.Text = item & vbCrLf

    Next

    Das würde schon passen, wenn ListBox1.Items tatsächlich
    Strings enthält. Es könnte aber auch sein, dass ListBox1.Items
    keine Strings sondern Objekte enthält. Das wäre dann der Fall,
    wenn Listbox1.DataSource = DataTable oder eine andere
    Auflistung von Objekten wäre.

    Hier ein Beispiel, welches beide Varianten zeigt.
    Kopiere den Code in ein leeres Formmodul Form1.vb.

    ' / Beginn Code Form1.vb
    Public Class Form1
        Private WithEvents ListBox1 As ListBox
        Private WithEvents Button1 As Button
        Private mSwitch As Boolean

        Private Sub Form1_Load _
                (ByVal sender As System.Object, _
                 ByVal e As System.EventArgs _
                ) Handles MyBase.Load

            ListBox1 = New ListBox
            With ListBox1
                .Name = "ListBox1"

                .SetBounds _
                        (10, 10, _
                         Me.ClientSize.Width - 20, _
                         Me.ClientSize.Height - 60)

                .Anchor = _
                        AnchorStyles.Left Or _
                        AnchorStyles.Top Or _
                        AnchorStyles.Right Or _
                        AnchorStyles.Bottom

                .Font = New Font("Arial", 12)
            End With
            Me.Controls.Add(ListBox1)

            Button1 = New Button
            With Button1
                .Name = "Button1"

                .SetBounds _
                        (10, ListBox1.Bottom + 10, _
                         150, 35)

                .Anchor = _
                        AnchorStyles.Left Or _
                        AnchorStyles.Bottom

                .Text = "Show List Items"
                .Font = New Font("Arial", 10)
            End With
            Me.Controls.Add(Button1)

            FillLlistBox()
        End Sub

        Private Sub Button1_Click _
                (ByVal sender As Object, _
                 ByVal e As System.EventArgs _
                ) Handles Button1.Click

            Dim NL As String = ControlChars.CrLf
            Dim Buffer As String

            If mSwitch Then

                Buffer = "ListBox.DataSource: DataTable" & NL

                ' Listbox1.Items enthält DataRowViews
                Dim Item As DataRowView
                For Each Item In ListBox1.Items
                    Buffer &= _
                        NL & Item(0).ToString & _
                        " " & Item(1).ToString
                Next

            Else

                Buffer = "ListBox.Items: String" & NL

                ' ListBox1.Items enthält Strings
                Dim Item As String
                For Each Item In ListBox1.Items
                    Buffer &= NL
                    Buffer &= Item
                Next
            End If

            MsgBox(Buffer, MsgBoxStyle.Information)

            mSwitch = Not mSwitch
            FillLlistBox()
        End Sub

        Private Sub FillLlistBox()
            If ListBox1.DataSource Is Nothing Then
                ListBox1.Items.Clear()
            Else
                ListBox1.DataSource = Nothing
            End If

            Dim i As Integer

            If mSwitch Then
                ' ListBox1 via ListBox1.DataSource = DT
                ' an DataTable binden.

                Dim DT As New DataTable
                Dim DR As DataRow
                With DT
                    .Columns.Add("ID", GetType(Integer))
                    .Columns.Add("Text", GetType(String))
                    For i = 1 To 12
                        DR = .NewRow
                        DR.Item(0) = i
                        DR.Item(1) = MonthName(i, False)
                        .Rows.Add(DR)
                    Next
                    .AcceptChanges()
                End With
                ListBox1.DisplayMember = "Text"
                ListBox1.DataSource = DT
                Me.Text = "ListBox1.DataSource: DataTable"

            Else
                ' ListBox1.Items mit Strings füllen

                For i = 1 To 12
                    ListBox1.Items.Add(MonthName(i, False))
                Next
                ListBox1.SelectedIndex = 0
                Me.Text = "ListBox1.Items: String"

            End If
        End Sub
    End Class
    ' \\\ E N T E

    Nach dem Programmstart siehst Du die Form1 mit
    einer Listbox und einem Button "Show ListBox Items".

    Mit jedem Klick auf den Button siehst Du mal den
    Inhalt von ListBox1.Items als Strings und mal als
    von ListBox1.Items als Objekte vom Typ DataRowView.

    Da Deine Frage nichts mehr mit dem ursprünglichen
    Thema dieses Threads zu tun hat, solltest Du künftig
    für solche Fragen einen neuen Thread eröffnen.

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Samstag, 25. September 2010 07:05
  • hey ho

     

    ich bin mir nicht ganz sicher ob ich das verstanden hab

    aber dieses stück code verschiebt den String aus der Listbox in die Msgbox:

     

            If mSwitch Then

                Buffer = "ListBox.DataSource: DataTable" & NL

                ' Listbox1.Items enthält DataRowViews
                Dim Item As DataRowView
                For Each Item In ListBox1.Items
                    Buffer &= _
                        NL & Item(0).ToString & _
                        " " & Item(1).ToString
                Next

            Else

                Buffer = "ListBox.Items: String" & NL

                ' ListBox1.Items enthält Strings
                Dim Item As String
                For Each Item In ListBox1.Items
                    Buffer &= NL
                    Buffer &= Item
                Next
            End If

            MsgBox(Buffer, MsgBoxStyle.Information)

            mSwitch = Not mSwitch
            FillLlistBox()

     

    ich verstehe nicht ganz wie man mit vb jede zeile bearbeitet

    dass man mit einer for each...next oder for...next schleife arbeit ist klar aber den befehl das jede zeile bearbeitet wird...

     

            For i = 0 To ListBox1.Items.Count - 1

                Dim zählen As Byte = Len(Label2.Text)
                Dim zählenF As Short = Len(EINE ZEILE AUS LISTBOX1) - zählen

                Dim Ende As String = Mid(EINE ZEILE AUS LISTBOX1, zählenF, zählen)


                If Ende = TextBox1.Text Then
                    ListBox2.Items.Add(DIESE ZEILE AUS LISTBOX1)

                Else : End If



            Next i

     

    wenn das ende der einzelnen Zeile aus Listbox1 den selben wert wie der Text aus Textbox1 hat dann wird dieser Text in Listbox2 kopiert

    wenn er nicht übereinstimmt wird weitergesucht

     

     

    ralle

     

     

    Montag, 27. September 2010 14:57
  • Hallo,

    ich bin mir nicht ganz sicher ob ich das verstanden hab

    Ich befürchte nicht zu wissen, was Du dabei nicht
    verstanden hast.

    aber dieses stück code verschiebt den String aus der
    Listbox in die Msgbox:


            If mSwitch Then

                Buffer = "ListBox.DataSource: DataTable" & NL

                ' Listbox1.Items enthält DataRowViews
                Dim Item As DataRowView
                For Each Item In ListBox1.Items
                    Buffer &= _
                        NL & Item(0).ToString & _
                        " " & Item(1).ToString
                Next

            Else

                Buffer = "ListBox.Items: String" & NL

                ' ListBox1.Items enthält Strings
                Dim Item As String
                For Each Item In ListBox1.Items
                    Buffer &= NL
                    Buffer &= Item
                Next
            End If

            MsgBox(Buffer, MsgBoxStyle.Information)

            mSwitch = Not mSwitch
            FillLlistBox()

    Hier werden keine Strings "verschoben", sondern ganz
    einfach der jeweilige Inhalt von ListBox1.Items(x) kopiert
    und als String in einer MsgBox ausgegeben.

    ich verstehe nicht ganz wie man mit vb jede zeile bearbeitet

    In obigem Code wird nirgendwo Text bearbeitet, sondern eben
    ganz einfach aus  der Listbox in eine Stringvariable kopiert und
    diese dann via MsgBox ausgegeben.

    dass man mit einer for each...next oder for...next schleife arbeit
    ist klar aber den befehl das jede zeile bearbeitet wird...

    Ich weiss nicht, was Du mit "jede zeile bearbeitet wird" meinst.
    Meinst Du vielleicht dieses Codestück

          For Each Item In ListBox1.Items
              Buffer &= NL
              Buffer &= Item
          Next

    statt dessen könntest Du auch schreiben

          For Each Item In ListBox1.Items
              Buffer = Buffer & NL
              Buffer = Buffer & Item
          Next

    Ist es das, was Du nicht verstanden hast?


            For i = 0 To ListBox1.Items.Count - 1

                Dim zählen As Byte = Len(Label2.Text)
                Dim zählenF As Short = Len(EINE ZEILE AUS LISTBOX1) - zählen
                Dim Ende As String = Mid(EINE ZEILE AUS LISTBOX1, zählenF, zählen)

                If Ende = TextBox1.Text Then
                    ListBox2.Items.Add(DIESE ZEILE AUS LISTBOX1)
                Else : End If

            Next i

    Ich weiss nicht so recht, was Du mit vorstehendem Code
    erreichen willst.

    wenn das ende der einzelnen Zeile aus Listbox1 den selben
    wert wie der Text aus Textbox1 hat dann wird dieser Text in
    Listbox2 kopiert
    wenn er nicht übereinstimmt wird weitergesucht

    Kopiere das nachfolgende Beispiel in ein leeres Formmodul Form1.vb.

    ' / Code in Form1.vb
    Public Class Form1
        Private Listbox1 As ListBox
        Private Listbox2 As ListBox
        Private WithEvents Textbox1 As TextBox

        Private Sub Form1_Load _
                (ByVal sender As System.Object, _
                 ByVal e As System.EventArgs _
                ) Handles MyBase.Load

            Listbox1 = New ListBox
            With Listbox1
                .Font = New Font("Arial", 10)
                .SetBounds(10, 10, 150, 300)
                .IntegralHeight = False
            End With
            Me.Controls.Add(Listbox1)

            Listbox2 = New ListBox
            With Listbox2
                .Font = Listbox1.Font

                .SetBounds _
                    (Listbox1.Right + 15, 10, 150, 300)

                .IntegralHeight = False
            End With
            Me.Controls.Add(Listbox2)

            Textbox1 = New TextBox
            With Textbox1
                .Font = New Font("Arial", 14)

                .SetBounds _
                        (10, Listbox1.Bottom + 20, _
                         Listbox2.Right - 10, .Height)

            End With
            Me.Controls.Add(Textbox1)

            Dim i As Integer
            For i = 1 To 12
                Listbox1.Items.Add(MonthName(i, False))
            Next
            Listbox1.SelectedIndex = 0

            Textbox1.Text = "er"

        End Sub

        Private Sub Textbox1_KeyPress _
            (ByVal sender As Object, _
             ByVal e As System.Windows.Forms.KeyPressEventArgs _
            ) Handles Textbox1.KeyPress

            If e.KeyChar = Chr(13) Then
                Dim i As Integer
                Dim LBItem As String

                Listbox2.Items.Clear()
                For i = 0 To Listbox1.Items.Count - 1
                    LBItem = Listbox1.Items(i).ToString
                    If LBItem.EndsWith(Textbox1.Text) Then
                        Listbox2.Items.Add(LBItem)
                    End If
                Next
            End If
        End Sub

        Private Sub Form1_Shown _
                (ByVal sender As Object, _
                 ByVal e As System.EventArgs _
                ) Handles Me.Shown

            Textbox1.Focus()

            Textbox1.SelectionStart = _
                Textbox1.Text.Length
        End Sub
    End Class
    ' \\\ E N T E

    Nach dem Programmstart siehst Du eine Form mit 2 Listboxen
    und einer Textbox.

    Gib in die Textbox z.B. "er" ein und drücke die Eingabetaste.
    Es werden alle Einträge aus Listbox1 die mit "er" enden in
    die Listbox2 kopiert.

    Gib in die Textbox z.B. "li" ein und drücke die Eingabetaste.
    Es werden all Einträge aus Listbox1 die mit "li" enden in
    die Listbox2 kopiert.

    * !!! *
    Ansonsten nochmals die Bitte, weitere Fragen in einem
    neuen Thread zu stellen, da diese nichts mehr mit dem
    ursprünglichen Thema zu tun haben.
    * !!! *

    Gruß aus St.Georgen
    Peter Götz
    www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

    Montag, 27. September 2010 18:30
  • * !!! *
    Ansonsten nochmals die Bitte, weitere Fragen in einem
    neuen Thread zu stellen, da diese nichts mehr mit dem
    ursprünglichen Thema zu tun haben.
    * !!! *

     

    yo gut

    hier gehts zu meinen neuen fragen...^^

    http://social.msdn.microsoft.com/Forums/de-DE/vbasicexpresseditionde/thread/38ae1afd-cefb-43fa-966b-6b95646843b1/

    Freitag, 1. Oktober 2010 18:43