Wywołanie radiobuttona z innej klasy - statyczność buttona a statyczność metody

0

Witam serdecznie. Jestem początkujący jeżeli chodzi o programowanie i aktualnie staram się napisać program liczący dane elementy toru kolejowego na potrzeby studiów. Mam jednak problem z pewną kwestią, mianowicie stworzyłem sobie za pomocą Designera interfejs graficzny (Form1) i w nim mam radiobuttony. W osobnej klasie Calc, która odpowiedzialna jest za poszczególne obliczenia, staram się ustalić warunki dla poszczególnych wyborów za pomocą:

 
 public static string countRails()
        { 
            if (Form1.rb60E1.Checked)
            {
                return "60E1";
            }
        
            else if (Form1.rb49E1.Checked)
            {
                return "49E1";
            }
            else
            {
                return "Nie wybrano typu szyny.";
            }

Jednak dostaję błąd:

An object reference is required for the non-static field, method, or property 'RailCalc.Form1.rb60E1'

Analogicznie z Form.rb49E1.

Próbowałem w Form1 dodać do radiobuttonów static, jednak potem już wyskoczyło tyle błędów w kodzie, że zaniechałem tej próby.

Postanowiłem więc stworzyć obiekt klasy Form1:

 public static string countRails()
        {
            Form1 frm1 = new Form1(); 
            if (frm1.rb60E1.Checked)
            {
                return "60E1";
            }
        
            else if (frm1.rb49E1.Checked)
            {
                return "49E1";
            }
            else
            {
                return "Nie wybrano typu szyny.";
            }
        } 

Kompilator nie raportuje błędów, metodę wywołuję poprzez guzik 'Oblicz', który wyświetla MessageBox. Niestety, cały czas dostaję komunikat "Nie wybrano typu szyny", nie ważne, czy zaznaczę guzik pierwszy czy drugi, czy żaden.
Jak mogę ten problem rozwiązać?

Dziękuję za wszelką pomoc,
pozdrawiam.

0

Wydaje mi się, czy Ty rzeczywiście masz metodę typu int, a zwracasz ciąg znaków?

0

Tak, przepraszam. Metodę na potrzeby sprawdzenia działania wybranego radiobuttona przerobiłem (wcześniej liczyła i zwracała inta). Powinno być string. W VS mam string, tutaj zapomniałem przeprawić.

0

Więc problem jest oczywisty:

Form1 frm1 = new Form1();

Widzisz, dlaczego to nie działa?

0

Szczerze powiedziawszy - nie. Szukałem rozwiązania na błąd który mi się wyświetlił i jedną z solucji było własnie stworzenie obiektu klasy i odwołanie się do niego. Nie mogę rozgryźć czemu to nie działa.

0

Tworzysz za każdym razem nową instancję formy, która jest zresetowana.

0

Rozumiem w takim razie, że tworząc instancję Form1 jest ona bez wybranych radiobuttonów. Jak w takim stworzyć instancję z wybranymi już radiobuttonami?

0

Nie twórz - przekaż jako argument na przykład...

0

Szczerze mówiąc, nie potrafię. Mogę prosić o jakiś przykład?
Dzięki.

0
public static string countRails(Form1 frm1)

Na przykład.

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