Controls auflisten
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Torty H.
-
-
siehe Controls Array/Aufliestung: msdn.microsoft.com/de-de/library/bb979199.aspx
-
-
Eventuell kannst das ja im Mouse Move Event machen.
// Machs einfach im jeweiligen Controll_Added Event! -
-
hm die maus wird relativ wenig bis gar nicht benutzt
es ist alles tasten gesteuert
links rechts oben unten
wen es aber in den jeweiligen up down usw event mach dan zuckt die listbox extremSystemUnknow schrieb:
Schreib dir eine Funktion wo du alle Controls aufliestest und in timer rufst sie auf.
So wird deine Aufliestung alle z.b 10s aktalisiert.
joa so hab ich es ja nur ich mag keine timer -.- -
...dann multithreading: msdn.microsoft.com/de-de/library/bb979513.aspx
Beispiel:
vbarchiv.net/faq/faq_vbnet_threads.html
startvbdotnet.com/threading/default.aspxDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SystemUnknow“ ()
-
-
activevb.de/cgi-bin/tippupload…readuebergreifende_Events
..zu thema "theard übergreifend" findest auch in Forum.... -
VB.NET-Quellcode
- Sub userlist()
- Dim i As Integer
- For i = 1 To 10000
- Dim ini As New INIDatei
- ini.Pfad = My.Application.Info.DirectoryPath & "test.ini"
- For Each ac As Control In Me.Controls
- 'Listet alle Controls mit dem Tag "User" auf'
- If ac.Tag = "user" Then
- ListBox2.Items.Add("Name:" & ac.Name)
- 'Schreibt Messages in den jenigen Tooltip'
- Dim tipp As New ToolTip
- Dim user As String = ini.WertLesen(ac.Name, "user")
- Dim msg As String = ini.WertLesen(ac.Name, "msg")
- tipp.Show(msg, Me.Controls(user))
- Else
- End If
- Next
- Next
- End Sub
irgentwie aktuellisiert der mir die listbox nicht -.- << noob -
[VB.NET] GUIHelper
Guck dir evtl. mal das zum Thema Threadübergreifendem Vorgang an...
Die ListBox wird nicht aktuallisiert, da du das ganze nicht im GUI-Thread sondern in einem anderen ausführst...Deshalb musst du alles, was mit Controls zu tun hat auf den GUI-Thread auslagern...Ich wollte auch mal ne total überflüssige Signatur:
---Leer--- -
-
-
-
-
were möglich gewesen wenn ich diese nicht aktuelisieren müsste
da ich ja die namen der controls auslese un diese dann für Messages Anzeigen benutze
-->Tomas schreibt eine Message
-->diese lese ich mit hilfe eines Contols aus
weil
wen tomas sich einloggt dann wird automatisch ein control erstellt zb button
tomas kann sich frei bewegen mit
links rechts oben unten
Tomas Button wird in die ListBox2 aufgenommen
dadurch kann ich seinen button namen auslesen
und für den ToolTip verwenden
wen Tomas eine Messages schreibt wird diese in Textbox2 angezeigt und in eine ini gespeichert
'ini wird als DB missbraucht ^^'
in dem ToolTip wird dann die Messages angezeigt 'von der Ini ausgelesen'
somit muss ich die listbox2 ständig neu laden damit man die neuen Messages dann auch lesen kann
und einen Timer benutze ich nur ungern da er gerne mal flagert bzw die listbox2 flagert
und das siht nicht wirklich tool aus -
Versuche es mal so:
VB.NET-Quellcode
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Dim t As New Threading.Thread(AddressOf a)
- t.Start()
- CheckForIllegalCrossThreadCalls = False
- End Sub
- Private Sub a()
- For Each Control In Me.Controls
- ListBox1.Items.Clear()
- For Each c In Me.Controls
- ListBox1.Items.Add(c.ToString)
- Next
- Next
- End Sub
Timerlos. -
@m9898:
- Niemals CheckForIllegalCrossThreadCalls auf False setzten. Man behebt damit die Programmfehler nicht, man versteckt sie nur.
- Niemals von einem anderen Thread auf Controls zugreifen.
- In a() leerst du die ListBox, füllst alle Controls des Fensters ein und dann machst du das ganze mehrmals, bis die äußere For-Schleife durchgelaufen ist. Das ist weder effizient noch erkenne ich eine Logik dahinter.
Das ControlAdded-Event wird hier wohl schon die richtige Wahl sein. Wenn du die neuen Controls nicht nur der Form hinzufügst, dann gehst du einfach im Form_Load() einmal alle Controls durch und registrierst das ControlAdded-Event für jedes.
Viele Grüße, Phil. -
-
Tags
-
Ähnliche Themen