pause zwischen zwei ereignissen
-
Samstag, 27. Oktober 2012 10:27
hallo!
ich hab wiedermal ein problem:
ich hab ein programm, dass den inhalt meiner textbox an ein anderes programm sendet und enter drückt (so weit so gut), dann sollte mein programm aber die ladezeit vom anderen programm abwarten, bevor es den inhalt meiner nächsten textbox sendet.
hab schon 2 dinge versucht:
SendKeys.SendWait(textbox1.Text) SendKeys.SendWait("{enter}") System.Threading.Thread.Sleep(5000) SendKeys.SendWait(textbox2.Text) SendKeys.SendWait("{enter}")hier ist das problem, dass durch System.Threading.Thread.Sleep(5000) auch die ladezeit vom anderen programm verlängert...also absolut ineffektiv!
zweiter versuch:
button click setzt timer1 auf enabled
timer1.tick zählt bei label1.text immer eins dazu
if label1.text = "1" then sendkeys.sendwait("textbox1.text") sendkeys.sendwait("{enter}") end if if label1.text = "6" then sendkeys.sendwait("textbox1.text") sendkeys.sendwait("{enter}") timer1.enabled = false label1.text = "0" end ifdiese möglichkeit funktioniert einwandfrei. jedoch zu meinem problem:
genau das soll mein programm so oft ausführen wie in textbox3 angegeben.
ich könnte jetzt einfach hergehen und das problem so lösen:
if textbox3.text = "1" then if label1.text = "1" then sendkeys.sendwait("textbox1.text") sendkeys.sendwait("{enter}") end if if label1.text = "6" then sendkeys.sendwait("textbox1.text") sendkeys.sendwait("{enter}") timer1.enabled = false label1.text = "0" end if end if if textbox3.text = "2" then if label1.text = "1" then sendkeys.sendwait("textbox1.text") sendkeys.sendwait("{enter}") end if if label1.text = "6" then sendkeys.sendwait("textbox2.text") sendkeys.sendwait("{enter}") end if if label1.text = "7" then sendkeys.sendwait("textbox1.text") sendkeys.sendwait("{enter}") end if if label1.text = "11" then sendkeys.sendwait("textbox2.text") sendkeys.sendwait("{enter}") timer1.enabled = false label1.text = "0" end if
end if
usw. aber da es im normalfall 10-20 mal das ganze wiederholen muss und im extremfall sogar 100x sind das sehr sehr viele zeilen code, was auch einfacher gehen muss...
vielen dank für eure hilfe!
wünsch euch ein schönes wochenende!
Alle Antworten
-
Samstag, 27. Oktober 2012 11:41
Hi,
generell solltest Du mal mit ordentlichen Variablennamen arbeiten, dann versteht man den Code auch :)
genau das soll mein programm so oft ausführen wie in textbox3 angegeben
Dim Anzahl As Int32 Int32.TryParse( textBox3.Text, Anzahl ) For Counter As Int32 = 1 To Anzahl ' Mach was ... Nextusw. aber da es im normalfall 10-20 mal das ganze wiederholen muss und im extremfall sogar 100x sind das sehr sehr viele zeilen code, was auch einfacher gehen muss...
Das nennt sich "Schleife" und gehört zu den Grundlagen der Progammierung. Lies dich mal zu dem Thema hier ein:
http://de.wikibooks.org/wiki/Visual_Basic_.NET:_Einfache_Schleifen
Dann solltest Du mal überlegen, ob es Sinn macht, denselben Code x-mal wie bspw. hier:
if textbox3.text = "2" then if label1.text = "1" then sendkeys.sendwait("textbox1.text") sendkeys.sendwait("{enter}") end if if label1.text = "6" then sendkeys.sendwait("textbox2.text") sendkeys.sendwait("{enter}") end if if label1.text = "7" then sendkeys.sendwait("textbox1.text") sendkeys.sendwait("{enter}") end if if label1.text = "11" then sendkeys.sendwait("textbox2.text") sendkeys.sendwait("{enter}") timer1.enabled = false label1.text = "0" end ifzu schreiben.
Bei allen Werten macht der Code dasselbe. Nur beim Wert 11 dann noch 2 Zeilen mehr. Daher bietet es sich an, den identischen Code auszulagern.
Select Case label1.Text Case "1", "7" SendeZeichen( "textbox1.text" ) Case "6" SendeZeichen( "textbox2.text" ) Case "11" SendeZeichen( "textbox2.text" ) timer1.enabled = false label1.text = "0" End Select ... Public Sub SendeZeichen( ByVal Eigenschaft As String ) sendkeys.sendwait( Eigenschaft ) sendkeys.sendwait( "{enter}" ) End SubDas geht natürlich noch besser und hübscher, aber es sollte ggfs. einen Denkanstoß geben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzMVP Samstag, 27. Oktober 2012 18:26
- Als Antwort vorgeschlagen Elmar BoyeMVP, Editor Sonntag, 28. Oktober 2012 16:34
- Als Antwort markiert Thorsten DörflerModerator Montag, 29. Oktober 2012 22:01
-
Sonntag, 28. Oktober 2012 14:16
vielen dank stefan!
ich hab zwar nur etwa 25% - 30% von deinem posting verstanden, aber das war genug um mein problem zu lösen ;)
schönen sonntag!

