• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Visual Studio 2019 C# Błąd kompilatora CS0120

Object Storage Arubacloud
+1 głos
1,115 wizyt
pytanie zadane 21 sierpnia 2020 w C# przez Filip Sośnicki Nowicjusz (230 p.)

Witam.

Jestem nowy jesli chodzi o Visual Studio.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuizOPlanecie
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
            
        }

        private void QuizOPlanecie_Load(object sender, EventArgs e)
        {

        }

        private void Graj_Click(object sender, EventArgs e)
        {
            Form2.Visible = true; //CS0120
        }
    }
}

Po wpisaniu tej lini kodu pokazuje błąd:"Błąd    CS0120    Dla niestatycznego pola, metody lub właściwości „Control.Visible” wymagane jest odwołanie do obiektu."

 

Proszę o pomoc. Z góry dzięki.

 

 

komentarz 22 sierpnia 2020 przez reaktywny Nałogowiec (41,050 p.)
edycja 22 sierpnia 2020 przez reaktywny

Obstawiam, ze to co napisał Siemił jest przyczyną błędu.

Poprawny zapis:

  private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Show();      
    }

Visible służy do czego innego. Możesz też potrzebować Activate(), tj.

form2.Activate();

lub

this.Activate();

Activate() służy do wyciągnięcia na wierzch okna (jeśli masz kilka okien i to które cię interesuje jest przesłonięte).

3 odpowiedzi

0 głosów
odpowiedź 22 sierpnia 2020 przez VBService Ekspert (253,400 p.)
wybrane 28 października 2020 przez Filip Sośnicki
 
Najlepsza
        private void Graj_Click(object sender, EventArgs e)
        {
            Form2 Form2 = new Form2();
            Form2.Visible = true;
        }

Open Form2 from Form1

1
komentarz 22 sierpnia 2020 przez DarthMazut Bywalec (2,990 p.)
xDDD
odwołujesz się do Form2 klasy czy instancji?

PROTIPP: Nazwy typów piszemy z dużej litery a nazwy zmiennych lokalnych z małej: rozważ Form2 form2 = new Form2()
pewnie dlatego ten błąd...
komentarz 22 sierpnia 2020 przez Filip Sośnicki Nowicjusz (230 p.)
Dodałem, nie pomogło
komentarz 22 sierpnia 2020 przez VBService Ekspert (253,400 p.)

Masz w ogóle Form2 dodane do projektu?

1
komentarz 22 sierpnia 2020 przez Filip Sośnicki Nowicjusz (230 p.)
Tak mam, i właśnie teraz się skapnąłem, że to pomogło
komentarz 22 sierpnia 2020 przez Filip Sośnicki Nowicjusz (230 p.)
Tylko, gdy wywołam funkcję this.Close();  dla Form1, to Cały program się zamknie, nawet Form2.
komentarz 22 sierpnia 2020 przez VBService Ekspert (253,400 p.)
edycja 22 sierpnia 2020 przez VBService

No bo Form1, jest formą "bazową" i domyślnie jak ją zamykasz to zamykasz program.

Ustaw Form1.Visible = false; wink, lepiej na this.Hide(); // Form1

private void Graj_Click(object sender, EventArgs e)
{
    Form2 Form2 = new Form2();
    Form2.Visible = true;
    this.Hide(); // this.Visible = false; // Form1
}

 

komentarz 22 sierpnia 2020 przez VBService Ekspert (253,400 p.)
edycja 22 sierpnia 2020 przez VBService

Taki bonusik wink dodaj do kodu Form1:

a w kodzie Graj_Click wpisz tak

        private void Graj_Click(object sender, EventArgs e)
        {
            Form2 Form2 = new Form2();
            Form2.Opacity = 0;
            Form2.Visible = true;
            this.Visible = false;

            for (double i = 0; i < 1.05; i+=0.05)
            {
                Form2.Opacity = i;
                Thread.Sleep(50);
            }
        }

lub tak:

        private void Graj_Click(object sender, EventArgs e)
        {
            Form2 Form2 = new Form2();
            Form2.Opacity = 0;
            Form2.Show();
            this.Hide();

            for (double i = 0; i < 1.05; i += 0.05)
            {
                Form2.Opacity = i;
                Thread.Sleep(50);
            }
        }

C# Sleep Method (Pause) ]

komentarz 22 sierpnia 2020 przez Filip Sośnicki Nowicjusz (230 p.)
Dzieki wielkie.Szukałem kiedyś sposoby na takie animacje. Pozdrawiam serdecznie.
+1 głos
odpowiedź 21 sierpnia 2020 przez Siemił Mądrala (7,380 p.)
Co to jest Form2 za obiekt? Statyczne cos? Gdzie go tworzysz? Dziwne ze ci vs nie podkreśla.
komentarz 21 sierpnia 2020 przez Filip Sośnicki Nowicjusz (230 p.)
Form2 w tym przypadku to okno nr 2 w moim projekcie.
komentarz 21 sierpnia 2020 przez Siemił Mądrala (7,380 p.)
Ok. Ale w którym miejscu je tworzysz? Czyli gdzie jest new Form2().
komentarz 22 sierpnia 2020 przez Filip Sośnicki Nowicjusz (230 p.)
No właśnie chyba tego nie zrobiłem...
0 głosów
odpowiedź 21 sierpnia 2020 przez Official gildin Bywalec (2,820 p.)

Taki tip

Jak używasz visual studio, to kliknij myszką na kod błędu w tym przypadku "CS0120

Powinno Cie przenieść na stronę msdn na której znajdziesz możliwe rozwiązania 

komentarz 21 sierpnia 2020 przez Filip Sośnicki Nowicjusz (230 p.)
Wiem, ale rozwiązania od microsoftu nie sprawdzają się w moim przypadku.
komentarz 21 sierpnia 2020 przez Official gildin Bywalec (2,820 p.)
Może robisz coś źle, ja nigdy nie siedziałem w C#

Ale w C++ jest tak, że idiotyczne właściwości projektu mogą to naprawić

Podobne pytania

0 głosów
0 odpowiedzi 297 wizyt
+1 głos
1 odpowiedź 133 wizyt
pytanie zadane 28 sierpnia 2020 w C# przez Kacperxoo Początkujący (330 p.)
0 głosów
1 odpowiedź 166 wizyt
pytanie zadane 6 lutego 2016 w C# przez Tomek Krupa Użytkownik (820 p.)

92,579 zapytań

141,431 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...