Metoda w innej klasie

0

Witam,

Na początek... tak wiem, że to pytanie w podobnych formach padało wiele razy, ale przejrzałem forum i nadal nie potrafię sobie poradzić z tym problemem.

A teraz co do pytania.
Mam taką oto metodę:

public void textBox_LeavingInt(object sender, EventArgs e)
        {
            TextBox x = (TextBox)sender;
            if (x.Text != "")
            {
                try
                {
                    string do_pomiar = x.Text.Replace(",", ".");
                    double do_int = Int32.Parse(do_pomiar, enUS);
                    x.Text = do_int.ToString().Replace(",", ".");

                }
                catch
                {
                    MessageBox.Show("Musisz wprowadzić liczbę całkowitą", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    x.Text = null;
                    x.Select();
                }
            }
        }

Metoda ma za zadanie przeczytać zawartość textboxa i na jej podstawie "zareagować".
Teraz pytanie jest takie, w jaki sposób można napisać tą metodę tak abym nie musiał jej umieszczać w każdym formie gdzie chcę użyć tego sprawdzenia.
Gdzieś przeczytałem, że aby wywołać metodę z innego miejsca (klasy) potrzeba zadeklarować metodę jako statyczną. Tak więc wyrzeźbiłem coś takiego:

namespace Aplikacja.Classes
{
    public class ClassLiczby
    {
        static CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");

        static void textBox_LeavingInt(object sender, EventArgs e)
        {
            TextBox x = (TextBox)sender;
            if (x.Text != "")
            {
                try
                {
                    string do_pomiar = x.Text.Replace(",", ".");
                    double do_int = Int32.Parse(do_pomiar, enUS);
                    x.Text = do_int.ToString().Replace(",", ".");

                }
                catch
                {
                    MessageBox.Show("Musisz wprowadzić liczbę całkowitą", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    x.Text = null;
                    x.Select();
                }
            }
        }
    }
}

Pytanie jednak, jak teraz odwołać się do tej metody z innego miejsca?
Podejrzewam, że coś zwaliłem, ale naprawdę już troszkę nad tym siedzę i nie jestem w stanie sobie poradzić. Będę wdzięczny za pomoc.

0

Przede wszystkim: public static void textBox_LeavingInt(object sender, EventArgs e)
A odwołanie: zwykłe ClassLiczby.textBox_LeavingInt...?

Ale to chyba nie zadziała, bo ty tu przecież masz obsługę zdarzenia LeavingInt. Generalnie to nie tak. Sprawdzasz tekst - więc zrób metodę sprawdzającą TEKST a nie TextBoxa...

Jak już będziesz taką miał, to w obsłudze zdarzenia każdego textboxa ODDZIELNIE wywołaj statyczną metodę, której jako argument podasz string.

0

Po co zamieniasz te przecinki na kropki i używasz na sztywno amerykańskiego sposobu zapisu liczb? To aplikacja na rynek US?

Tak w ogóle, to żeby sprawdzić, czy wprowadzony tekst jest liczbą całkowitą wystarczy użyć metody int.TryParse() z odpowiednimi parametrami. Zwraca ona wartość true, jeśli tekst zawiera liczbę całkowitą.

Tak w ogóle, to sugeruję poczytać książkę o podstawach języka, zwłaszcza o tworzeniu klas i metod.
Nie da się tworzyć sensownych aplikacji okienkowych nie znając podstawowej składni!

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