Tjena,
Ytterligare en nybörjarfråga:
Hur gör jag så att en sub körs när jag trycker enter i en textbox?
Alltså, istället för att man skall behöva trycka på en knapp (_Click) så vill jag ha eventet för en enter-tryckning.
Mvh, Vide
11 svar · 306 visningar · startad av Vide
Tjena,
Ytterligare en nybörjarfråga:
Hur gör jag så att en sub körs när jag trycker enter i en textbox?
Alltså, istället för att man skall behöva trycka på en knapp (_Click) så vill jag ha eventet för en enter-tryckning.
Mvh, Vide
Private Sub DinTextBox_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
'Din kod här ..
End If
End Sub
Ett enkelt sätt är att trycka F2 för att få upp Object Browsern. I listan t. vä. kan man sen välja den komponent man är intresserad av (tex TextBox). I listan t. hö. får man då upp alla metoder, properties och events för det valda objektet tillsammans med en kort beskrivning. Vill man ha mer detaljerad info får man nog söka sig till MSDN i vanlig ordning ..
Sådärja, tackar! :)
... och om jag vill loopa igenom det som finns i listboxen för att se vilka som selected, hur gör jag då?
I VBS finns det ju "for each item in object", finns det något liknande här?
"for each nånting in nånting" finns i både VB och VBScript fast i båda fallen används det bara när man loopar igenom en collection.
Eftersom elementen i en listbox inte utgör en collection så får man nog loopa via index, skulle jag tro ..
Har denna kod nu, men får fel på RemoveItem-raden:
Private Sub btnDeleteUser_Click()
Dim i As Integer
For i = 0 To Names.ListCount
If Names.Selected(i) Then
Names.RemoveItem (i)
End If
Next
End Sub
Det står ju att man skall använda index till den...
Du får problem med for-loopen eftersom du plockar bort element i listan.
Om det är en single-select så kan du kanske skriva så här:
Dim i As Integer
For i = 0 To Names.ListCount - 1
If Names.Selected(i) Then
Names.RemoveItem (i)
Exit Sub
End If
Next
Ah, det är sant. Så eftersom jag har en multi så måste jag göra en rekursiv loop eller? Och måste jag då göra en refresh av listan eller fixas det ändå?
Så eftersom jag har en multi så måste jag göra en rekursiv loop eller?
Nej, det blir faktiskt enklare än så (kom jag på i efterhand):
Dim i As Integer
For i = Names.ListCount - 1 To 0 Step -1
If Names.Selected(i) Then Names.RemoveItem i
Next i
Refresh behövs inte det är inbakat i RemoveItem.
Ah, smart! :D