Skocz do zawartości

Po zakończeniu progressbar przycisk staje się aktywny/klikalny


Pan Inwestor

Rekomendowane odpowiedzi

Witam.

Nie mam za dużego doświadczenia w programowaniu, posiłkuję się raczej YT ale na jedną rzecz nie mogę znaleźć odpowiedzi:

Mam progressbar i chciałbym, aby po dojściu do jego końca pod spodem pojawił się (bądź zrobił aktywny) przycisk do przejścia do kolejnego formularza.

Czy jest to do wykonania? Programuję w Visual Studio 2017 (C#).

Próbowałem z funkcją 'if' oraz 'then' ale to chyba ze starszych wersji i tutaj nie działa :-(

Pozdrawiam

iwi.pl - blog o inwestowaniu przez internet    |    zwi.pl - blog o zarabianiu przez internet 

 

Odnośnik do komentarza

Zarejestruj się za darmo i naucz się zarabiać online!

  • Dostęp do darmowych poradników pokazujących krok po kroku jak zarabiać w Internecie
  • Sposoby zarabiania niepublikowane nigdzie indziej
  • Aktywna społeczność, która pomoże Ci rozwiązać problemy i doradzi
  • Profesjonalne treści na temat SEO, social media, afiliacji, kryptowalut, sztucznej inteligencji i wiele więcej!

O tej godzinie to ja ci mogę jedynie polecić przepis na naleśniki, ale doradzę na dobry początek, byś zainstalował sobie wersję VB z 2010r. Po prostu dużo poradników i wiedzy użytkowników opiera się o tę wersję. Ja już na wersji bodaj z 2012 (Nie pamiętam) miałem co chwile error'y, bo nie szło nic wklepać w kod.

  • Super 1

Seohost

Odnośnik do komentarza

d93b0b9c44.gif

using System;
using System.Windows.Forms;

namespace Temp12 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e) {
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e) {
            progressBar1.PerformStep();
            if (progressBar1.Value == progressBar1.Maximum) {
                timer1.Stop();
                Form2 f = new Form2();
                f.Show();
            }
        }
    }
}
  • Super 2
Odnośnik do komentarza

Zrobiłem coś takiego:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Progress
{
    public partial class Form1 : Form
    {
        private Timer time = new Timer();

        private void InitializeMyTimer()
        {
            time.Interval = 50;

            time.Tick += new EventHandler(IncreaseProgressBar);

            time.Start();
        }

        private void IncreaseProgressBar(object sender, EventArgs e)
        {
            progressBar1.Increment(1);

            if (progressBar1.Value == progressBar1.Maximum)
            {
                time.Stop();
                button2.Enabled = true;
            }
        }

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            InitializeMyTimer();
        }

    }
}
  • Super 1
Odnośnik do komentarza

Ok, to może ja coś źle robię.

1. Otwieram VB (2017 lub 2010)

2. Tworzę nowy projekt (Aplikacja Windows Forms) C#

3. Klikam 2x na form1

4. Czyszczę cały kod i wklejam ten, który podał @cantoro oraz @coffee powyżej.

Używam C# od dwóch dni, więc nie jedźcie po mnie za bardzo :wacko:

iwi.pl - blog o inwestowaniu przez internet    |    zwi.pl - blog o zarabianiu przez internet 

 

Odnośnik do komentarza

Mój program wymaga utworzenia dwóch przycisków i progressbara w Form1 [Design]. Dodajesz z Toolbox.

Możliwe też, że kasujesz domyślną nazwę (namespace). W moim przypadku nazwij projekt Progress.

W pliku Form1.Designer.cs powinno być coś takiego (po dodaniu przycisków):

namespace Progress
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.progressBar1 = new System.Windows.Forms.ProgressBar();
            this.SuspendLayout();
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(13, 33);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 0;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // button2
            // 
            this.button2.Location = new System.Drawing.Point(294, 119);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(75, 23);
            this.button2.TabIndex = 1;
            this.button2.Text = "button2";
            this.button2.UseVisualStyleBackColor = true;
            this.button2.Enabled = false;
            // 
            // progressBar1
            // 
            this.progressBar1.Location = new System.Drawing.Point(13, 90);
            this.progressBar1.Name = "progressBar1";
            this.progressBar1.Size = new System.Drawing.Size(356, 23);
            this.progressBar1.TabIndex = 2;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(447, 172);
            this.Controls.Add(this.progressBar1);
            this.Controls.Add(this.button2);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
        private System.Windows.Forms.ProgressBar progressBar1;
    }
}

Aby button2 był nieaktywny dodałem tutaj:

this.button2.Enabled = false;
  • Super 1
Odnośnik do komentarza
Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Do While ProgressBar1.Value < 100

            Threading.Thread.Sleep(80)

            ProgressBar1.Value = ProgressBar1.Value + 1

            If ProgressBar1.Value = 100 Then
                Button2.Enabled = True
            End If

        Loop

  



    End Sub
End Class

w vb wyglada to tak

jak progress bar doleci do konca wtedy button2 = enabled

image.png.2e7c499338c619714411435163683b22.pngimage.png.51ed2b0e3696f29fb38b59deddd22b8e.pngimage.png.f26c09d8c3372452e4370f5e06416a4f.png

  • Super 1

6.png

Odnośnik do komentarza
16 minut temu, Cresh2 napisał:

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Do While ProgressBar1.Value < 100

            Threading.Thread.Sleep(80)

            ProgressBar1.Value = ProgressBar1.Value + 1

            If ProgressBar1.Value = 100 Then
                Button2.Enabled = True
            End If

        Loop

  



    End Sub
End Class

w vb wyglada to tak

jak progress bar doleci do konca wtedy button2 = enabled

image.png.2e7c499338c619714411435163683b22.pngimage.png.51ed2b0e3696f29fb38b59deddd22b8e.pngimage.png.f26c09d8c3372452e4370f5e06416a4f.png

Nigdy przenigdy nie róbcie tego w ten sposób. Zamrażanie wątku, na którym siedzi gui NIGDY nie jest dobrym pomysłem.

  • Super 1
Odnośnik do komentarza

Dzięki panowie @coffee, @Ramagos, @Cresh2 i @cantoro za pomoc! Mam nadzieję, że nikogo nie pominąłem :-)

Zrobiłem wg poleceń @coffee.

A jak dodać teraz pod progressbar'em aby wyświetlało się co aktualnie program robi?

Mam na myśli takie coś jak na tym zdjęciu:

giphy.gif

Pochodzi ono z tego wpisu: 

Póki co dodałem nowy lable3 pod progressbar'em i dodałem nowy timer2 (dobrze?)

Chciałem dodać taki kod do timer2:

ProgressBar1.Increment(1)
        If ProgressBar1.Value = 1 Then
            Label1.Text = "Ładowanie"
        End If
        If ProgressBar1.Value = 15 Then
            Label1.Text = "Łączenie ze serwerem"
        End If
        If ProgressBar1.Value = 25 Then
            Label1.Text = "Wczytywanie ustawień konta"
        End If
        If ProgressBar1.Value = 45 Then
            Label1.Text = "Wczytywanie danych..."
        End If
        If ProgressBar1.Value = 55 Then
            Label1.Text = "Wczytywanie danych - zakończone!"
        End If
        If ProgressBar1.Value = 80 Then
            Label1.Text = "Łączenie z bazą..."
        End If
        If ProgressBar1.Value = 86 Then
            Label1.Text = "Wczytano pomyślnie!"
        End If
        If ProgressBar1.Value = 95 Then
            Label1.Text = "Proces zakończył się SUKCESEM!"
        End If

Jednak on nie działa pod wersją 2017 (na 2010 działa). Co muszę w nim przerobić?

iwi.pl - blog o inwestowaniu przez internet    |    zwi.pl - blog o zarabianiu przez internet 

 

Odnośnik do komentarza

@coffee, po lekkich modyfikacjach działa. Oto ostateczny kod tego timera:

{
            progressBar1.Increment(1);

            if (progressBar1.Value == 1)
                label3.Text = "Ładowanie";
            

            if (progressBar1.Value == 15)
                label3.Text = "Łączenie z serwerem";

            if (progressBar1.Value == 25)
                label3.Text = "Wczytywanie ustawień konta";

            if (progressBar1.Value == 45)
                label3.Text = "Wczytywanie danych...";

            if (progressBar1.Value == 55)
                label3.Text = "Wczytywanie danych...";

            if (progressBar1.Value == 80)
                label3.Text = "Łączenie z bazą...";

            if (progressBar1.Value == 90)
                label3.Text = "Łączenie z bazą...";

            if (progressBar1.Value == 99)
                label3.Text = "Proces zakończył się sukcesem";
        }

Musiałem wywalić 'Then' oraz 'End if' bo nie rozpoznawało tego w ogóle.

Dodatkowo po .Value = dodałem obok kolejny "=". i ubrałem to w nawiasy (po if i na końcu).

Nie wiem czy to poprawnie napisany kod pod względem programowania ale działa.

Jak możesz to rzuć okiem czy coś zmienić ewentualnie.

Problem jest tylko w tym, że progressbar nie idzie wolno i w miarę płynnie (step ustawiony na 1).

iwi.pl - blog o inwestowaniu przez internet    |    zwi.pl - blog o zarabianiu przez internet 

 

Odnośnik do komentarza

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Polecana zawartość

    • Poradnik podatkowy - jak rozliczać się z pieniędzy zarobionych przez Internet bez DG?
      Zarabianie w Internecie wiąże się z koniecznością płacenia podatków - a rozliczanie się z urzędem skarbowym nie jest jednoznaczne i proste. Prawo podatkowe w Polsce jest nieujednolicone - co oznacza, że każdy urząd skarbowy może mieć inne interpretacje. Sprawdź jak się za to zabrać!
        • Lubię to!
        • Super
      • 12 odpowiedzi
    • JDG - Jak zarejestrować, rozliczać i prowadzić działalność gospodarczą w Polsce
      Jednoosobowa działalność gospodarcza (JDG) to najprostsza forma prowadzenia działalności gospodarczej w Polsce. Jest to działalność prowadzona przez jedną osobę fizyczną na własne nazwisko i na własne ryzyko. Jednak mimo, że nazywa się jednoosobowa - daje jednak możliwość zatrudniania pracowników. Takich firm jest zarejestrowanych w Polsce zdecydowanie najwięcej. Sprawdź jak zarejestrować, rozliczać i prowadzić własną JDG!
        • Super
      • 3 odpowiedzi
    • Inwestowanie w obligacje detaliczne skarbu państwa - od podstaw!
      Sprawdź jak inwestować w obligacje skarbowe - krok po kroku! Detaliczne obligacje skarbowe to rodzaj obligacji emitowanych przez Państwo, które są oferowane indywidualnym inwestorom, takim jak osoby fizyczne, a nie instytucjom finansowym.

      Są to instrumenty dłużne, nienotowane na żadnym rynku, co oznacza że kupując taką obligację, w praktyce pożyczasz pieniądze państwu na określony czas, a w zamian otrzymujesz odsetki. Można więc powiedzieć że obligacje są indywidualną pożyczką na określony % dla Skarbu Państwa. Państwo odda Ci więcej niż od Ciebie pożyczyło.
        • Super
      • 7 odpowiedzi
    • Jak pozyskiwać i zarabiać na poleconych dzięki make-cash.pl
      W tym poradniku przedstawiam możliwości dostępne dla każdego użytkownika. Dowiesz się jak efektywnie wykorzystać forum do zbierania poleconych i budowania dodatkowych zysków.

      Make-cash.pl to miejsce, gdzie ludzie dzielą się swoimi doświadczeniami, poszukują porad i rekomendacji, a także nawiązują wartościowe kontakty. Codziennie odwiedza nas minimum 2000 unikalnych osób, które są zainteresowane zarabianiem przez Internet - a to ogromny potencjał, z którego może korzystać nie tylko administracja - ale każdy użytkownik forum !
        • Super
      • 2 odpowiedzi
    • Jak pisać treści na stronę internetową z wykorzystaniem AI
      Tworzenie treści od podstaw może być procesem czasochłonnym. Istnieje wiele mniejszych kroków, o których należy pomyśleć w drodze do stworzenia atrakcyjnych treści, takich jak badanie rynku, SEO i redagowanie tekstu, a to tylko początek. Jednak nie musisz zaczynać od zera, gdy istnieją narzędzia AI, które mogą pomóc w tworzeniu wysokiej jakości treści. 
        • Dzięki!
        • Super
      • 13 odpowiedzi
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Ta strona korzysta z ciasteczek, aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie z witryny oznacza zgodę na ich wykorzystanie. Polityka prywatności .