Form mit ca. 30 Controls speichern

25/09/2007 - 00:22 von Peer Schlephack | Report spam
Ich habe ein Form mit ca. 30 Controls drauf.
Gibt es eine Möglichkeit ein "onchange" zu setzen, so dass ich nicht für
jedes control die Änderung überwachen muss, sondern es mitgeteilt bekomme,
wenn der Benutzer den Wert von z.B. einer TextBox àndert?!
 

Lesen sie die antworten

#1 Karsten Sosna
25/09/2007 - 05:34 | Warnen spam
Ich habe ein Form mit ca. 30 Controls drauf.
Gibt es eine Möglichkeit ein "onchange" zu setzen, so dass ich nicht für
jedes control die Änderung überwachen muss, sondern es mitgeteilt bekomme,
wenn der Benutzer den Wert von z.B. einer TextBox àndert?!



Hier ein Beispiel mit 3 TextBoxen:
\\\
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load
AddHandler TextBox1.TextChanged, AddressOf TextBox_TextChanged
AddHandler TextBox2.TextChanged, AddressOf TextBox_TextChanged
AddHandler TextBox3.TextChanged, AddressOf TextBox_TextChanged
End Sub
'...
Private Sub TextBox_TextChanged(ByVal sender As Object, ByVal e As
System.EventArgs)
If TypeOf sender Is TextBox Then
Console.WriteLine(DirectCast(sender, TextBox).Name)
End If

Select Case True
Case sender Is TextBox1
Console.WriteLine("TextBox1-TextChanged")
Case sender Is TextBox2
Console.WriteLine("TextBox2-TextChanged")
Case sender Is TextBox3
Console.WriteLine("TextBox3-TextChanged")
End Select
End Sub
///
Um nur festzustellen ob sich irgendein Text der TextBoxen geàndert hat
reicht der If-Block. Um detailierter abzufragen welche TextBox es war
brauchst Du den Select-Block. Solltest Du die Controls dynamisch erzeugen
muss ggf. auf den Namen testen, der dann natürlich auch gesetzt werden muss.
\\\
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load
Dim tb As New TextBox
tb.Name = "TextBox1"
tb.Parent = Me
AddHandler tb.TextChanged, AddressOf TextBox_TextChanged

tb = New TextBox
tb.Name = "TextBox2"
tb.Parent = Me
AddHandler tb.TextChanged, AddressOf TextBox_TextChanged

tb = New TextBox
tb.Name = "TextBox3"
tb.Parent = Me
AddHandler tb.TextChanged, AddressOf TextBox_TextChanged
End Sub
'...
Private Sub TextBox_TextChanged(ByVal sender As Object, ByVal e As
System.EventArgs)
If TypeOf sender Is TextBox Then
Dim tb As TextBox = DirectCast(sender, TextBox)
Select Case tb.Name
Case sender "TextBox1"
Console.WriteLine("TextBox1-TextChanged")
Case sender "TextBox2"
Console.WriteLine("TextBox2-TextChanged")
Case sender "TextBox3"
Console.WriteLine("TextBox3-TextChanged")
End Select
End If
End Sub
///
Gruß Scotty

Ähnliche fragen