• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Timer w Windows Form (.NET Framework) C#

+1 głos
170 wizyt
pytanie zadane 1 maja 2021 w C# przez Zygax Nowicjusz (130 p.)
Hej potrzebuję pomocy, ponieważ dopiero zaczynam i chciałbym zrobić CPS testera. W tej chwili wszystko idzie dobrze tylko nie mogę zrobić czegoś takiego że w przycisk można klikać przez 5s od pierwszego kliknięcia. Puki co próbowałem jak mogłem ale nie udaje się a nigdzie nie mogę znaleźć jak można by było zrobić coś takiego.

2 odpowiedzi

0 głosów
odpowiedź 1 maja 2021 przez adrian17 Mentor (354,120 p.)

Tworzysz timer w klasie okna:

    public partial class MyForm: Form
    {
        Timer countdown = new Timer();

W wybranym momencie odpalasz go i mówisz że po upłynięciu czasu ma wyłączyć guzik:

countdown.Interval = 1000;
countdown.Tick += (sender, e) => { button1.Enabled = false; countdown.Stop(); };
countdown.Start();

To samo można to też zapisać z osobną metodą zamiast lambdy:

    countdown.Interval = 1000;
    countdown.Tick += timerTick;
    countdown.Start();

// ...

private void timerTick(Object sender, EventArgs e)
{
    button1.Enabled = false;
    countdown.Stop();
}

 

0 głosów
odpowiedź 3 maja 2021 przez VBService Ekspert (256,600 p.)
edycja 3 maja 2021 przez VBService

Możesz też wykorzystać: BackgroundWorker

using System;
using System.ComponentModel;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private BackgroundWorker backgroundWorkerButtonEnable;

        public Form1()
        {
            InitializeComponent();

            backgroundWorkerButtonEnable = new BackgroundWorker();
            backgroundWorkerButtonEnable.DoWork += new DoWorkEventHandler(backgroundWorkerButtonEnable_DoWork);
            backgroundWorkerButtonEnable.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorkerButtonEnable_RunWorkerCompleted);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorkerButtonEnable.RunWorkerAsync();
        }

        private void backgroundWorkerButtonEnable_DoWork(object sender, DoWorkEventArgs e)
        {
            Thread.Sleep(5000);            
        }

        private void backgroundWorkerButtonEnable_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            button1.Enabled = false;
        }
    }
}

 

 

Make thread-safe calls to Windows Forms controls ]
How to set timeout for a line of c# code ]
setTimeout equivalent in C# ]
Set timeout to an operation ]

Podobne pytania

0 głosów
1 odpowiedź 401 wizyt
pytanie zadane 4 maja 2021 w C# przez mateusz45 Gaduła (3,280 p.)
+1 głos
2 odpowiedzi 569 wizyt
pytanie zadane 30 kwietnia 2021 w C# przez mateusz45 Gaduła (3,280 p.)
0 głosów
1 odpowiedź 451 wizyt
pytanie zadane 29 stycznia 2018 w C# przez Misiek Mądrala (5,320 p.)

93,428 zapytań

142,423 odpowiedzi

322,652 komentarzy

62,789 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...