|
| Autor |
Nachricht |
aschne Newbie

Anmeldedatum: 10.04.2009 Beiträge: 2
|
In Me.Controls Reihenfolge ändern
Verfasst am: 10.04.2009, 08:23 |
|
|
Hallo Leute,
ich totaler Anfänger im VB hab mir das tool jetzt aber einmal hergenommen um eine Lernkartei für den Segelschein zu machen.
Möchte mir eine grafik hernehmen und über die beschriftungen Textboxen legen .... diese dann befüllen können und überprüfen.
soweit läuft das ganze ja ... nur hab ich ein problem und zwar folgende schleife
For Each tbs In Me.Controls
If i < 7 Then
If i > -1 Then
If TypeOf tbs Is TextBox Then
If tbs.Text = Begriffe(i) Then
tbs.ForeColor = System.Drawing.Color.Green
Punkte = Punkte + 1
i = i - 1
Else
tbs.ForeColor = System.Drawing.Color.Red
i = i - 1
End If
End If
End If
End If
Next
eigentlich wollt ich bei 0 starten und dann einfach bis 6 rauf gehen (also 7 einträge abarbeiten, die schleife würde ja in die richtige richtung laufen wenn ich i=i++ eingeben würde nur werden die textboxen genau in der verkehrten richtung angesprochen ...
erst tb7 dann 6 .. usw ... wie kann ich Me.controls sagen er soll mit der tb1 beginnen ... und somit einfach raufarbeiten ... würde mir so eine if abfrage sparen und es wäre eigentlich logischer ...
eigentlich interessiert es mich nur ob ich die reihenfolge irgendwie abändern kann
hab das ganze form nochmal angefügt ... danke für die Antworten
LG
Andi
Public Class Form1
Dim Begriffe() As String = {"Niederholer", "Spi-Baum", "Toppnant", "Spinnaker", "Spi-Fall", "Spi-Achterholer", "Spi-Schot"}
Dim Punkte As Integer = 0
Dim Gesamtpunkte As Integer = 0
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Felderloeschen.Click
Dim tb As Control
For Each tb In Me.Controls
If TypeOf tb Is TextBox Then
tb.Text = ""
tb.ForeColor = System.Drawing.Color.Black
End If
Next
Punkte = 0
Label2.Text = Punkte
End Sub
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
End Sub
Private Sub Berechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Berechnen.Click
Punkte = 0
Dim tbs As Control
Dim i As Integer = 6
For Each tbs In Me.Controls
If i < 7 Then
If i > -1 Then
If TypeOf tbs Is TextBox Then
If tbs.Text = Begriffe(i) Then
tbs.ForeColor = System.Drawing.Color.Green
Punkte = Punkte + 1
i = i - 1
Else
tbs.ForeColor = System.Drawing.Color.Red
i = i - 1
End If
End If
End If
End If
Next
Label2.Text = Punkte
End Sub
Private Sub Beenden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Beenden.Click
End
End Sub
End Class |
|
| |
|
 |
_Marduk Newbie

Anmeldedatum: 12.04.2009 Beiträge: 1
|
Verfasst am: 12.04.2009, 23:12 |
|
|
| Entweder du machst es manuell in der IDE (Design-Ansicht: Ansicht -> Aktivierreihenfolge) und klickst dann die entsprechende Reihenfolge an, oder du kannst auch per Code über TabIndex des jeweiligen Controls darauf zugreifen und sie so verändern. |
|
| |
|
 |
aschne Newbie

Anmeldedatum: 10.04.2009 Beiträge: 2
|
Verfasst am: 13.04.2009, 00:21 |
|
|
danke für die antwort aber die aktivierungsreihenfolge sollte passen .... zumindest sind die boxen richtig nummeriert ... jedoch fängt die schleife mit der höchsten nummer an und arbeitet sich dann runter ... gibts ne möglichkeit das er mit der niedrigsten anfängt und sich hocharbeitet?
danke |
|
| |
|
 |
Marduk_ « Moderator »

Anmeldedatum: 17.06.2007 Beiträge: 389
|
Verfasst am: 13.04.2009, 00:39 |
|
|
Du kannst auch mal versuchen so auf die Textboxen zuzugreifen.
Klappt wunderbar in C#, sollte dann auch in VB gehen
| Code: | | Form1.ActiveForm.Controls["textBox1"].Text = "asdf"; |
|
|
| |
|
 |
|
|