[C#]zmienna public

0

Witam,
W glownej klasie (u mnie nazwana Main) mam zmienna: public string zmienna = "kot";
Teraz probuje w nowej formie (u mnie nazwana Nowa); richbox.text = Main.zmienna;
Mimo ze zmienna ustawiona jest na public nie mam do niej dostepy z drugiej formy;/
Co robie zle?

0
public partial class Form1 : Form
    {
        public string zmienna = "ala";
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            Form2 form = new Form2(zmienna);
            form.Show();
        }
    }
public partial class Form2 : Form
    {
        
        public Form2(string napis)
        {
            InitializeComponent();
            textBox1.Text = napis;

        }
}

Musisz w jakiś sposób przekazać zmienna do formy2, ponieważ forma1 definiuje ją "dodatkowo" i nie jest statyczna, więc odwołanie Forma1.cośtam nie jest możliwe.

0

Main.zmienna
tak odwołujesz się do zmiennych statycznych klasy Main

Main main = new Main();
main.zmienna

tak odwołujesz się do zmiennych innych niż statyczne
(oczywiście wszystkie muszą mieć ustawiony określony tryb widoczności (dostępu)).

edit: nie zdążyłem

0

Lub możesz ustawić modyfikator dostępu kontrolki w formie2 na public, i wtedy możesz zmieniać jej właściwości z poziomu forma1, wtedy w taki sposób.
Polecam pierwsze rozwiązanie.

private void Form1_Load(object sender, EventArgs e)
        {
            Form2 form = new Form2();
            form.textBox1.Text = "dowolny text";
        }
1

Nie jestem tutaj aż tak długo, a taki sam temat widzę już co najmniej piąty raz :P

Main main = new Main();
main.zmienna

To będzie głupie, bo zawsze będzie to samo (podczas inicjacji konstruktor zmieni to na 0, ew. coś innego jeśli programmer napisze).
Musisz jakoś przekazać referencję do drugiego okna.

(Oczywiście zaraz przyleci tu Quetz i mnie zjedzie, ale używanie zmiennych publicznych jest lamerskie. Właściwości rlz!!1)

edit: @Ciekawski - a co to niby ma zmieniać? :|

0

Dziwne tyle odpowiedzi i zadna mi nie dziala;/

Forma głowna:

public partial class Main : Form
    {
        public string zmienna = "1";

        Form2 form2 = new Form2();
        
        public Main()
        {
            InitializeComponent();           
        }   

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

Forma druga

 public partial class Form2 : Form
    {

       Main main = new Main();

        public Form2()
        {
            InitializeComponent();
            
        }
private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text += main.zmienna;
            
         }  
1

Main main = new Main();
..:<font size="3">:Nieeeee!!!::.</span>.

Zrób to tak:

Form2 form2 = new Form2(this);
       Main main;

        public Form2(Main form)
        {
            InitializeComponent();
            this.main = form
        }
0

na pewno nie tak w konstruktorze

Form2 form2 = new Form2(this);

bo pokazuje mi blad

doesnt contain a construktor that take 1 arguments

0
admin napisał(a)

na pewno nie tak w konstruktorze
Form2 form2 = new Form2(this);

> 
> bo pokazuje mi blad
> 
> doesnt contain a construktor that take 1 arguments


wyedytuj konstruktor w form2 (dodaj parametr)
1

Czemu nigdy nikt nie czyta moich postów do końca ;( ?
Czemu w ogóle nikt nie czyta moich postów? ;( ?

0

Um.. czemu nikt nie czyta czego? :>

MSM napisał(a)

(Oczywiście zaraz przyleci tu Quetz i mnie zjedzie, ale używanie zmiennych publicznych jest lamerskie. Właściwości rlz!!1)

protestuję.. ja tępię twierdzenie od górne że fields są evil, i postuluję używanie i properties i fields - z głową i zgodnie z przeznaczeniem..

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