Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [vb2010] Windows 7 e progress bar

    Qualcuno che ha Windows 7 e qualche minuto da perdere, può incollare questo codice in un nuovo progetto Windows Forms??

    codice:
        Dim pb As New ProgressBar
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
            Me.Height = 60
            Me.Width = 330
            pb.Minimum = 0
            pb.Maximum = 1000
            pb.Height = 10
            pb.Width = 300
            pb.Top = 10
            pb.Left = 10
            pb.ForeColor = Color.Blue
            pb.Enabled = True
            pb.Visible = True
            pb.Style = ProgressBarStyle.Continuous
    
            Me.Controls.Add(pb)
    
            Me.Show()
    
            For x = 0 To 990 Step 10
                pb.Value = x
                pb.Refresh()
                Threading.Thread.Sleep(5)
            Next
    
            'per verificare fino a che punto arriva il cursore della progress bar
            Threading.Thread.Sleep(5000)
    
            Me.Close()
    
        End Sub
    La cosa inspiegabile che accade, perlomeno sul MIO Windows7, è questa:

    Se nelle proprietà del Desktop seleziono il Tema "Windows Classico" la barra va regolarmente fino in fondo

    Se seleziono il tema (di default) "Windows 7 Basic" la barra si ferma a 2/3 della corsa!!!

    Inoltre anche se ho settato il colore su Blu... la barra col Basic è verde.

    E' un bug del MIO Seven o c' è qualcosa che non va tra la progress bar e Windows 7 basic?
    .

  2. #2
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    429
    Ciao, anche a me da il problema da te descritto, ma commentando la linea di codice

    codice:
    Threading.Thread.Sleep(5000)
    Me.Close()
    arriva quasi fino in fondo, a 990 come impostato da te nel ciclo for, penso sia un problema di visualizzazione solamente ma potrei sbagliarmi perche' non mi intendo molto di thread
    Da un grande potere derivano grandi responsabilità

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prova ad inserire una

    Application.DoEvents()

    dopo la Next
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Originariamente inviato da oregon
    Prova ad inserire una

    Application.DoEvents()

    dopo la Next
    Mah... lo ho fatto e non cambia nulla, neanche mettendolo all' interno del ciclo. Di più: avendo chiuso, riavviato e riscritto ex novo l' applicazione (ci vogliono 10 secondi col copia-incolla) adesso la barra non va oltre la metà, quando è selezionato il tema Windows 7 basic. E la barra continua ad essere verde nonostante la dichiari blu.

    Ma, scusa, hai provato??

    EDIT: Comunque ho commentato come ha detto abellos:

    Threading.Thread.Sleep(5000)

    ed in effetti in questo caso la barra arriva fino in fondo con entrambi i Temi! Allora ho sostituito per prova lo Sleep(5000) con:

    codice:
            Dim Start As DateTime = Now
            Do
                Application.DoEvents()
            Loop Until (Now - Start).TotalSeconds > 4
    e così la barra arriva fino in fondo!!!!

    INCREDIBILE!!!!!!!!!! E perché mai lo Sleep(5000) dovrebbe bloccare il cursore della barra a metà corsa a ciclo For-Next ormai concluso, col valore massimo già raggiunto?... e perchè mai lo fa solo con un tema e non con l' altro???
    .

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.