Dostępność kontrolek we własnej klasie

Dyskusje na temat języka C# oraz biblioteki .NET
profit
Początkujący
Początkujący
Posty: 17
Dołączył(a): wtorek, 3 listopada 2015, 21:05

Dostępność kontrolek we własnej klasie

Post przez profit »

Mam własną klasę do obliczania kosztu wymalowania sypialni. Ale przy stawianiu warunków nie mogę odwołać się do kontrolek text.Box, checkbox itd. Mam taki błąd podczas kompilacji. Ja to rozwiązać?
An object reference is required for the non-static field, method, or property 'MainWindow.textBox'

Code: Zaznacz cały

class Sypialnia
        {
           
            public static int Sciany( int KosztFarba, int KosztNarzedzia)
            {
                
                if (!string.IsNullOrEmpty(textBox.Text))
                {
                    KosztFarba = int.Parse(textBox.Text);
                }
                if (checkBox.IsChecked == false)
                {
                    KosztFarba = 0;
                }
int SumaSypMalow = 0;

                SumaSypMalow =  KosztFarba + KosztNarzedzia ;
                return SumaSypMalow;
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Dostępność kontrolek we własnej klasie

Post przez Morfidon »

Hej,

Przepraszam, że dopiero teraz. Otworzyłem zakładkę i zapomniałem odpowiedzieć.

Po prostu nadaj im nazwy atrybutem Name i odwołaj się po tej nazwie. Jeśli nadałeś nazwę to wg błędu, który podałeś próbujesz się odwołać do kontrolek z poziomu statycznej metody. Twoja metoda Sciany jest statyczna co znaczy, że istnieje nawet gdy nie istnieje kontrolka, tak więc odwoływanie się do czegoś co potencjalnie może nie istnieć może być niebezpieczne, dlatego też nie mogłeś wykonać tego co robiłeś.

Pozdrawiam serdecznie,

Arkadiusz Włodarczyk
profit
Początkujący
Początkujący
Posty: 17
Dołączył(a): wtorek, 3 listopada 2015, 21:05

Re: Dostępność kontrolek we własnej klasie

Post przez profit »

Czy możesz mi podpowiedzieć jak to przepisać?
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Dostępność kontrolek we własnej klasie

Post przez Morfidon »

Po prostu usuń słowo kluczowe static z metody.
profit
Początkujący
Początkujący
Posty: 17
Dołączył(a): wtorek, 3 listopada 2015, 21:05

Re: Dostępność kontrolek we własnej klasie

Post przez profit »

Niestety to nie pomogło nadal ten sam błąd.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Dostępność kontrolek we własnej klasie

Post przez Morfidon »

Teraz może być co najwyżej inny błąd, albo w zły sposób odwołujesz się do tej metody. Pokaż odwołanie. Tylko ten błąd się wyświetla?
profit
Początkujący
Początkujący
Posty: 17
Dołączył(a): wtorek, 3 listopada 2015, 21:05

Re: Dostępność kontrolek we własnej klasie

Post przez profit »

Code: Zaznacz cały

private void Button_Click(object sender, RoutedEventArgs e)
        {
wynik = Sypialnia.Sciany( KosztFarba, KosztNarzedzia);
            Suma.Text = wynik.ToString();
}   

 class Sypialnia
        {
            
            public static int Sciany(int KosztFarba, int KosztNarzedzia)
            {
  
            KosztFarba = int.Parse(textBox1.Text);
            KosztNarzedzia = Convert.ToInt32(textBox2.Text);

                if (!string.IsNullOrEmpty(textBox.Text))
                {
                    KosztFarba = int.Parse(textBox.Text);
                }
   if (checkBox1.IsChecked == false)
            {
                KosztFarba = 0;
            }
 if (!string.IsNullOrEmpty(textBox2.Text))
            {
                KosztNarzedzia = Convert.ToInt32(textBox2.Text);
            }
 if (checkBox2.IsChecked == false)
            {
                KosztNarzedzia = 0;
            }
                int SumaSypMalow = 0;

                SumaSypMalow = KosztFarbaGr + KosztFarba + KosztNarzedzia + KosztRobocizna;
                return SumaSypMalow;


            }
        }
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Dostępność kontrolek we własnej klasie

Post przez Morfidon »

Dalej nie usunąłeś słowa static z metody Sciany i wywołujesz bezpośrednio metodę Sciany. Stworz obiekt klasy Sypialnia w metodie Button_Click i wywolaj metodę przy pomocy obiektu.
profit
Początkujący
Początkujący
Posty: 17
Dołączył(a): wtorek, 3 listopada 2015, 21:05

Re: Dostępność kontrolek we własnej klasie

Post przez profit »

Code: Zaznacz cały


  private void Button_Click(object sender, RoutedEventArgs e)
        {
            Sypialnia syp = new Sypialnia();
 wynik = syp.Sciany();
            Suma.Text = wynik.ToString();

 class Sypialnia
        {
            int KosztFarbaGr; int KosztFarba; int KosztNarzedzia; int KosztRobocizna; int wynik; int SumaSypMalow ;
            public  int Sciany()
            {

                KosztFarbaGr = int.Parse(textBox.Text);
                KosztFarba = int.Parse(textBox1.Text);
                KosztNarzedzia = Convert.ToInt32(textBox2.Text);
                KosztRobocizna = int.Parse(textBox4.Text);
                if (!string.IsNullOrEmpty(textBox.Text))

                    SumaSypMalow = KosztFarbaGr + KosztFarba + KosztNarzedzia + KosztRobocizna;
                return SumaSypMalow;


            }
        }
Niestety nadal we własnej klasie nie mogę się bezpośrednio odwołać do textboxów i checkboxów
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Dostępność kontrolek we własnej klasie

Post przez Morfidon »

Czemu masz klasę wewnątrz metody? Za każdym razem jak coś zmienisz to podawaj błędy.
Post Reply