wie kann ich in visual basic eine progressbar dur einen button zum laufen bringen??
danke im vorraus
!!!
wie kann ich in visual basic eine progressbar dur einen button zum laufen bringen??
danke im vorraus
!!!
Hallo --> Anrede,
hmm, auch nach mehrmaligen durchlesen, komme ich immer noch nicht drauf, was du möchtest!
Was möchtest du denn nun genau? Was hast du denn bereits schon?
Eine Progressbar ans laufen bringen, ist recht simple! Egal unter welcher Version von VB. Wobei, welches VB meinst du denn? VBA, VB, .NET welche Version?
wie kann ich in visual basic eine progressbar dur einen button
zum laufen bringen??danke im vorraus
!!!
MfG Alex -> Abschied
wie kann ich in visual basic eine progressbar dur einen button
zum laufen bringen??danke im vorraus
!!!
wie der andere schon sagt,
und dazu noch, die progressbar ist nur eine darstellung , die werte muss man selber irgentwie organisieren , irgentwoher muss der progress ja kommen.
Aber hilft ja nix, solange du uns blind lässst und nichts genaues mit beispielen hast, ist eh nicht zu helfen.
HALLO
sorry wegen den fehlenden infos
also: Mein Projekt soll so ausehen wie wenn es etwas installieren würde
also wenn ich auf den button „installieren“ klicke soll die progressbar vollaufen
zur info: Visual Basic express
Hallo,
Nun ja, das Layout musst du schon selber festlegen. Das dann etwas passiert ist rel. einfach
Public Class Form1
Dim MyButton As New Button With {.Text = "Installieren", .Dock = DockStyle.Top}
Dim MyButton1 As New Button With {.Text = "Exit", .Dock = DockStyle.Top}
Dim MyProgressbar As New ProgressBar With {.Style = ProgressBarStyle.Continuous, .Dock = DockStyle.Bottom, .MarqueeAnimationSpeed = 50}
Private Sub Form1\_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
RemoveHandler MyButton.Click, AddressOf Press
RemoveHandler MyButton1.Click, AddressOf Press
End Sub
Private Sub Form1\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Controls.Add(MyButton)
Me.Controls.Add(MyButton1)
Me.Controls.Add(MyProgressbar)
AddHandler MyButton.Click, AddressOf Press
AddHandler MyButton1.Click, AddressOf Press
End Sub
Private Sub Press(ByVal Sender As Object, ByVal e As EventArgs)
If Sender.Equals(MyButton) Then
MyProgressbar.Style = ProgressBarStyle.Marquee
Else
End
End If
End Sub
End Class
Erstelle mal ein neues Project. Windows Form … Auf der Form setze mal keine Steuerelemente drauf und kopiere dir lediglich den Source den ich dir gepostet habe in die leere Form. Danach klicke mal auf start und du siehst das Zusammenspiel.
PS: Die Progressbar läuft in dem Demo nicht voll. Willst du dies erreichen, so setze die Style Eigenschaft auf Blocks, setze den Max und den Min Wert.
Instanziere dir dann einen Timer, setze den Intervall und starte ihn! Declariere dann im Tick Event des Timer eine Statische Variable oder halt im Program eine globale. Setze sie auf Min-1 und im Tick Event erhöhst du sie im 1 und prüfst ob sie =Max ist. Ist sie das stoppst du den Timer. Zum Schluss setzt du noch das Value und das wars
Alternativ, was auch die elegantere Variante ist, die selbe Vorgehensweise wie oben beschrieben, nur das du anstatt des Timers einen neuen Thread instanzierst, diesen startest und dort über Thread.Sleep den Thread kurz einschlafen laesst und danach den Value Wert erhöhen um 1. Bedenke dann aber das du einen Thread übergreifenden Zugriff machst und du in eine Exception läufst. Also musst du die Progressbar über Invoke (Delegate) füllen
Aber wegen dem Ding was du vor hast. Hmm, ich würde es ganz anders angehen. Ich würde oben in einen Label irgendein Sülz angeben. Den User auffordern ein Folder anzugeben, danach ein Verzeichnis xyz ermitteln. Dazu alle Verzeichnisse in eine List(of String einlesen) Mittels einem Zufallsgenerator, welcher sich mit den Sekunden aus NOW instanziert. Als Max, nimmst du anzahl der Eintraege in der Liste weniger 1.Dann anhand der ermittelten Nummer, in der List nachschauen, welches Verzeichniss das ist. Nun würde ich eine neue Liste mit den zu installierenden Dateien erstellen.
Dann eine Progressbar starten wie in mein Demo. Nun einfach von jedem File die Grösse mittels FileInfo ermitteln. Pro 1MB würde ich 1 Sekunde ansetzen …
Danach einen neuen Thread starten und im Label anzeigen "Installiere Datei xyz( Deine ermittelte Datei aus dem Directory) nach abc (Das vom user angegebene Verzeichnis).Danach schickst du den Thread für die ermittelte Zeit schlafen und machst dann weiter. Zum Ende dann stoppe die Progressbar und zeige eine Messagebox an, das alles erfolgreich installiert wurde.
Fertig ist der Laden. Schaut sicher aus sehr geil aus. Ok, einen Sinn hat es nicht! Aber für 10 bis 15 Minuten coden, schon was tolles
Wozu willst du das überhaupt machen ? Jemanden aergern oder um rumzufetzen?
MfG Alex
Hey RakonDark,
wie kann ich in visual basic eine progressbar dur einen button
zum laufen bringen??danke im vorraus
!!!wie der andere schon sagt,
und dazu noch, die progressbar ist nur eine darstellung , die
werte muss man selber irgentwie organisieren , irgentwoher
muss der progress ja kommen.
Nein, brauchst du unter .Net nicht Stelle mal den Style auf Marquee und staune *grins*
Aber hilft ja nix, solange du uns blind lässst und nichts
genaues mit beispielen hast, ist eh nicht zu helfen.
MfG Alex
also: Mein Projekt soll so ausehen wie wenn es etwas
installieren würdealso wenn ich auf den button „installieren“ klicke soll die
progressbar vollaufen
Hallo üei,
kann es vielleicht sein daß du einem Kumpel einen Streich spielen willst, der klickt auf einen Button auf den du ihn hingelotst hast, dann erscheint ein Spruch wie „Ihre Festplatte wird neu formatiert, alle daten werden gelöscht“
dazu erscheint dann die Fortschrittsanzeige, äh progressbar?
Oder soll „hinter“ der progressbar etwas stecken was Step by Step geschieht, wenn ja, was?
Gruß
Reinhard
ja ich möchte einen kumpel verar*
kannst du mir das mit nem step by step nochmal erklären?
danke
Hey ü-EI,
danke
obwohl wir hier im falschen Forum sind und ich gerade mal kurz langeweile habe und heute ins WE gehe habsch ma schnell was gebastelt. Kannst Dir ja mal anschauen und deinen Bedürfnissen anpassen.
Die Form habe ich aber in der GUI zusammen geklickert.
Erstelle mal eine Form und tacker da ma folgendes drauf
Links im oberen Drittel ne kleines Bildchen ( Soll ja schick aussehen)
Daneben ein Label, mit irgendeiner Anzeige. Zum Bsp
Willkommen zum automatischen Installationsprogram von Microsoft Windows 8.0 Release 1.0.0.2.4
Da unten drunter. Also unter dem Bild ein Label mit dem Text
„Installiere“ Daneben mache mal ein Label, mit dem Borderstyle fixed3D, Autoellipsis =true, Autosize =False, Name =lblDetail. Mache es ruhig etwas grösser ( über 2 oder 3 Zeilen)
Unter dem Label mit dem Text Installiere, setze mal ein Label mit dem Text „Datei“.
Neben dem Label mit dem Text Datei, setze ein Label mit dem Namen lblAnzahl, Autosize=true
Unter dem Label mit dem Text Datei setze mal ein Label mit dem Text Fortschritt. Daneben tacker mal eine Progressbar mit Name=pbSize
Dann ziehe mal noch eine Progressbar auf die Form , gebe ihr dem Namen pbFortschritt. Setze dort Dock auf bottom
Nach dem setzen der Dock Eigenschaft, sollte die Progressbar nach unten rutschen
Zwischen den beiden Progressbar’s setzt du noch 2 Buttons
Button1 : Text =Installieren, Name btnInstall
Button2 : Text =Beenden, Name btnExit
Das sollte dann ungefaehr so ausschauen
Bild Willkommen zum automatischen .....
Installiere: Labelxyz
Datei: Labeluvw
Fortschritt: Progressbar
Beenden Installieren
Progressbar
Nun kopiere dir mal folgenden Source in die leere Form
Imports System.IO
Public Class frminstall
Private VM As ViewModel
Private FPath As String = String.Empty
Private MyFiles As List(Of String) = Nothing
Private Sub frminstall\_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If e.CloseReason = CloseReason.TaskManagerClosing Then e.Cancel = True
End Sub
Private Sub frminstall\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Me.Cursor = Cursors.WaitCursor
btnExit.Enabled = False
VM = New ViewModel("d:\", True)
Me.Cursor = Cursors.Default
Catch ex As Exception
End Try
End Sub
Private Sub btnInstall\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInstall.Click
Dim CreateFolder As Boolean = False
Try
Using FBD As New FolderBrowserDialog
With FBD
.Description = "Bitte wählen Sie das Installationsverzeichnis aus"
.ShowNewFolderButton = True
If .ShowDialog(Me) = Windows.Forms.DialogResult.OK Then FPath = .SelectedPath
End With
End Using
CreateFolder = (New DirectoryInfo(FPath).GetFiles.Count) = 0
pbfortschritt.MarqueeAnimationSpeed = 50
pbfortschritt.Style = ProgressBarStyle.Marquee
If VM IsNot Nothing Then
MyFiles = VM.GetFileList(VM.Folder(VM.GetIndex(Now.Second, VM.FoldersCount)))
End If
For I As Integer = 0 To MyFiles.Count - 1
lblAnzahl.Text = (I + 1).ToString & " / " & MyFiles.Count
lblDetail.Text = "Kopiere Datei " & MyFiles(I) & " nach " & FPath
lblAnzahl.Refresh()
lblDetail.Refresh()
pbSize.Maximum = (New FileInfo(MyFiles(I)).Length) \* 100
'Me.Text = pbSize.Maximum
For J As Integer = pbSize.Minimum To pbSize.Maximum
pbSize.Value = J
If pbfortschritt.Maximum \> 10000 Then warten(New TimeSpan(1000))
Next
Next
If CreateFolder Then Directory.Delete(FPath)
Catch ex As Exception
Finally
pbfortschritt.Style = ProgressBarStyle.Blocks
btnExit.Enabled = True
btnInstall.Enabled = False
MessageBox.Show("Installation erfolgreich abgeschlossen!", "Installation Fertig", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
Private Sub warten(ByVal Wait As TimeSpan)
Dim ZielZeit As Date = Date.Now().Add(Wait)
Do While Date.Now()
Nicht stören lassen von dem was da steht, ist alles nur Show, ausser das ein Verzeichnis wie er es angibt angelegt wird und im Anschluss wieder gelöscht wird.
Bei der Instanzierung der Klasse ViewModel musst du dem Konstruktor 2 Parameter übergeben. Einer Davon ist das Root Verzeichnis und der andere ob auch die SubFolders durchsucht werden sollen. Den ersten Parameter musst du bei dir anpassen. Bedenke aber, gibst du c:\Windows an, so kann der Start Vorgang etwas dauern :/
Auch hast du in der Schleife folgende Abfrage drinnen
If pbfortschritt.Maximum \> 10000 Then warten(New TimeSpan(1000))
Das kannst du auch anpassen. Das besagt nur wenn die Datei grösser 10.000 Byte ist, so wird nach jedem Byte 1000 Nanosekunden gewartet. Durch anpassen der beiden Parameter kannst du den Zeitablauf imens veraendern! Musst halt mal ein wenig damit rumspielen!
Hoffe das hilft dir weiter :wink:
MfG Alex
Danke, das hat funktioniert aber: wie baut man sowas???
Danke, das hat funktioniert aber: wie baut man sowas???
Wie meinst du das, wie man so etwas baut?
MfG Alex
ich meine damit, wie man funktionierende programme baut, die au was können
ich meine damit, wie man funktionierende programme baut, die
au was können
Hallo Ei,
mach’s wie alle, such dir ein programm aus, versuche damit zu programmieren.
Erstmal „hello world“ auf den Bildschirm zaubern.
Der Rest ist dann nur noch ein bißchen ) learning & doing…
Gruß
Reinhard
ich meine damit, wie man funktionierende programme baut, die
au was können
Naja, du hast doch den Source vorliegen. Wenn du es mal testet unter VB10, indem du strg +F5 drueckst, sollte es laufen. Nun hast du im Release Verzeichnis die Exe liegen! Diese ist sofort lauffaehig, da du keinen fremden Referenzen nutzen tust. Das einzigste was gewaehrleistet sein muss, ist das Framework unter welchen du dein Program „gebastelt“ hast auf dem Zielrechner installiert ist. Welches Framework du nutzt das weisst nur du und haengt von deinen Anforderungen ab.
Willst du dagegen ein Setup haben, was man installaieren kann, so klicke einfach auf „Projekt“ und dann Projektname veröffentlichen. Folge dann den Anweisungen und du hast dein Setup.
MfG Alex
ich meine damit, wie man funktionierende programme baut, die
au was könnenHallo Ei,
mach’s wie alle, such dir ein programm aus, versuche damit zu
programmieren.
Erstmal „hello world“ auf den Bildschirm zaubern.Der Rest ist dann nur noch ein bißchen ) learning &
doing…
Ein Wenig?
Der war gut *grins*
Gruß
Reinhard