Nieprawidłowy typ zwracany z button_click

0

Pierwszy raz bawię się w jakieś okienkowe proste rzeczy i mam taki problem.


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

        private int button1_Click(object sender, EventArgs e)
        {
            var time = DateTime.Now;
            int startTime = time.Minute;

            return startTime;
        }

        private int button2_Click(object sender, EventArgs e)
        {
            var time2 = DateTime.Now;
            int stopTime = time2.Minute;

            return stopTime;
        }

        public void Result(int startTime, int stopTime)
        {
            int duration = stopTime - startTime;
            string durationResult = duration.ToString();
            label2.Text = durationResult;
        }
     
    }

Niby w samym kodzie nic nie podkreśla ale już przy próbie odpalenia nie chce przejść. Kod CS0407, Czytałam trochę o tym błędzie ale przykłady w sieci z tych najbardziej podobnych do mojego banalnego kodu opierały się na tym, że ktoś zwracał double zamiast int itp.

Proszę o pomoc.

1

zdarzenia 'Click' przycisków nie mogą być typu int tylko void

0

Ale dopóki są void nie mogę z nich zwrócić pobranej wartości. Jak inaczej mogę przekazać coś z tych buttonów dalej?

2

no nie wiem co chcesz osiągnąć utwórz sobie jakaś zmienną i przypisz do niej wartość np.

       int a = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            a = Convert.ToInt32(textBox1.Text);
        }
     private void button2_Click(object sender, EventArgs e)
        {
            textbox2.Text = a.ToString();
        }
0
Sandra napisał(a):

Ale dopóki są void nie mogę z nich zwrócić pobranej wartości. Jak inaczej mogę przekazać coś z tych buttonów dalej?

wywołaj w button metode która za parametr przyjmie ci duration i niech ci zwraca. Zależy co konkretnie chcesz osiągnąć

0

Po kliknięciu w przycisk button1 pobieram aktualny czas. Tak samo po kliknięciu w button2 i później chcę te wartości od siebie odjąć i wyświetlić w label2. Dopóki było int to przynajmniej poprawnie zwracało pobrany aktualnie czas.

EDIT:
Główne pytanie polega na tym, czy da się to zrobić bez zmiennej globalnej, tak ładnie jakoś przekazać te wartości dalej

2

Zaproponowane rozwiązanie to nie jest zmienna globalna, tylko pole w klasie. I nie jesteś w stanie tego zrobić w lepszy sposób.

1

Żeby było ładniej można użyć Stopwatch i pole w klasie to najlepsze i najprostsze rozwiązanie.

public partial class Form1 : Form
    {
        private Stopwatch Stopwatch;

        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            Stopwatch = Stopwatch.StartNew();
        }

        private void Button2_Click(object sender, EventArgs e)
        {
            label1.Text = Stopwatch.Elapsed.ToString();
        }
    }
0

Dziękuję za odpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1