Hallo Jan,
Erstens bist du hier im falschen Brett, weil es sich um .Net
handelt.
hmm Unter Visual Studio habe ich für mein Projekt Visual Basic
ausgewählt, und als Hilfe benutze ich ein Buch das sich
Einstieg in Visual Basic 2010 nennt aber darin finde ich für
mein Problem keine Lösung.
Ach das findest du dort ganz sicher. Das Buch ist wirklich gut. Nur sollte man es von Anfang lesen. Du musst die Grundprinzipien verstehen, sonst wird das alles nichts
Das ein überlauf stattfindet wusste ich schon hab ich dass
nicht geschrieben?Darf man als Anfänger fragen was Try / Catch
ist
Also Try /Catch:
Das ist eine Fehlerbehandlungsroutine.
Du kannst doch Source schreiben und dabei Gefahr laufen das ein Fehler auftritt. Bestes Bsp. dafür ist zum Bsp. das ablegen von Daten in einer Datei. Du weisst ja nun nicht welchen Pfad der User angibt. Sicher könntest du alles prüfen, hat er die Rechte, ist genug Speicherplatz da etc. Nun vergisst du aber nur ein was und schwups tritt ein Fehler auf! Damit gernau das nicht passiert, gibt es Try / Catch (Finally)
Der Aufbau ist wiefolgt
Private Sub DeineProzedure(Args as DeineArgumente) Handles DeinElement.DasEvent
Try
'Code1
Catch EX as Exception
'Code2
Finally
'Code3
End Sub
Was passiert hier? Also wenn der Source (Code1) Fehlerfrei durchläuft, springt er bis zum Catch Zweig. Dieser wird aber nicht abgearbeitet! Danach springt er in den Finally Block und arbeitet den Source (Code3)da ab.
Tritt nun aber ein Fehler auf in Code1, springt er sofort in den Catch Zweig und arbeitet da den Source (Code2)ab. Danach geht er in den Finally Block und arbeitet den Source(Code3) ab.
Den Finally Block kannst du aber auch weglassen, sofern du in nicht brauchst
Du musst Dir halt nur merken, das er den Source der im Finally Block steht, definitv immer abarbeitet! Auch wenn du zum Bsp. eine Anweisung hast, alla Exit … oder Return …, so springt er noch einmal in den Finally Block.
Im Catch Block hast du Ex als Exception declariert. Du kannst dort natürlich auch den aufgetretenen Fehler abfragen. Informationen zum Fehler findest du da in dem Falle unter Ex.
Zum Bsp.
Catch Ex as DivideByZeroException
Auch kannst du den Catch Block noch erweitern und mehre Fehler abfangen. Das würde dann wiefolgt ausschauen
Catch Ex1 as DivideByZeroException
'Code
Catch Ex2 as StackOverflowException
'code
Catch Ex3 as Exception
Das ist alles sehr vielseitig. Am besten schaust du einfach mal hier
http://openbook.galileocomputing.de/vb_net/msvb03000…
Da ist es auch schön beschrieben
Wie du siehst eine sehr schöne Sache. Und haettest du Try /Catch angewendet, so haettest du gesehen was los ist
das beim anklicken eines Buttons ein Timer startet und die
Progressbar auf maximum also in diesem fall 100 läuft ( da ich
den 7 schritt gut fand habe ich 89 als maximum da man so die
progress bar fast voll hätte gewählt)und dann beim anklicken
des nächsten Buttons das ganze sich wiederholt.
Der Sinn davon ergibt sich mir nicht Das ist reine Zeitverschwendung. Eine Progressbar nimmst du zum Bsp, wenn du Dateien kopieren willst und den Fortschritt damit anzeigen möchtest. Aber nun gut.
das ist bei mir nicht ganz der fall aber trotzdem möchte ich
schonmal lernen wie man sie auf diese weise nutzt.
Du setzt in der Progressbar die Eigenschaft Maximum. Dann setzt du immer nur die Value Eigenschaft auf einen Wert und der wird dann entsprechend angezeigt!
Ich hab mal ein bisschen google befragt und dort stand dass
ich den Timer so resette mit
Timer.enabled= False
Timer.enabled= True
Jedenfalls beim erneuten Event von Tick was
SO ist es Deshalb sollte der Timer auch bei 98 stehen bleiben
und nicht automatisch wieder starten.
Das hat mit dem Timer nichts zu tun, Jan.
Ein Timer macht nichts anderes, wie ein absenden in gewissen Zeitabstaenden. Wie lange der Abstand dauert kannst du mittels der Eigenschaft Intervall festlegen. Das Event (Ereignis) was dann auftritt nennt sich Tick.
wenn man die Zeile über dieser weglässt kommt das
schon
ziemlich nah dran
nur das die Progressbar auf maximum stehen
bleiben soll bis der nächste Button aktiviert wird erst dann
sollte die ProgressBar wieder von 0 bis 100 laufen bei den
schritten könnte ich mich auch mit 5 anstatt 7 anfreunden
ich werde mal die hierfür wichtigen teile des Programms
anhängen
Gut, dann gehst du anders vor!
Erst einmal eine logische Überlegung.
Du hast 2 Buttons. Beim Klick auf den ersten Button, soll die Progressbar los laufen, bis zu ihrem Maximum Wert. Wenn dieser erreicht ist, soll sie stehen bleiben. Was passiert aber nun wenn genau in dieser Zeit der Button 2 geklickt wird? Richtig, dann wird alles mist. Also sperren wir den 2 Button dafür und geben ihn erst frei wenn die Progressbar ihren Max. Wert erreicht hat!
Hört sich vielleicht kompliziert an, ist es nicht.
Hier ein Demo
Public Class Form1
Private Sub Timer1\_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If ProgressBar1.Value = ProgressBar1.Maximum Then
CType(sender, Timer).Stop()
Button1.Enabled = True
Button2.Enabled = True
Else
ProgressBar1.Value += 1
End If
End Sub
Private Sub Button1\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button2.Enabled = False
ProgressBar1.Value = 0
Timer1.Interval = 50
Timer1.Start()
End Sub
Private Sub Button2\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Button1.Enabled = False
ProgressBar1.Value = 0
Timer1.Interval = 50
Timer1.Start()
End Sub
Private Sub Form1\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ProgressBar1.Maximum = 100
End Sub
End Class
Wie du siehst eigentlich ganz einfach.
Durch setzen des Maximum Wertes im Load Ereignis des Formulares kannst du allgemein (Für Klick auf Button1 oderButton2)die Dauer der Zeit bis die Progressbar voll ist erhöhen.
Durch erhöhen/erniedrigen des Intervalls im Click Ereignis des Buttons kannst, du die Laufzeit erhöhen oder veringern für den Button.
Spiele damit mal ein wenig herum und ändere da mal die Werte. Dabei wirst du feststellen wie sich alles verhaelt
MfG Alex