Nieprawidłowy typ zwracany z button_click

Nieprawidłowy typ zwracany z button_click
Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
0

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

Kopiuj

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.

Kubuś Puchatek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 235
1

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

Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
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?

Kubuś Puchatek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 235
2

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

Kopiuj
       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();
        }
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
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ąć

Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
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

neves
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1114
2

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

Wilktar
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 82
1

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

Kopiuj
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();
        }
    }
Sandra
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 223
0

Dziękuję za odpowiedzi.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.