Zmienna nie tracąca wartości.

0

Witam. Podczas robienia projektu do szkoły napotkałem pewien problem. Posiadając 2 formy najpierw wyświetlana jest pierwsza. Po naciśnięciu przycisku wyświetlana jest druga Formatka. Problem polega na tym, że dla elementu znajdującego się na drugiej formatce chcę przypisać wartość określaną na formatce 1 w zależności od tego który przycisk zostanie wciśnięty. Niestety po inicjowaniu drugiej formatki musiałem dodać referencję i wartość zapisywana w tej zmiennej znika. Jest jakaś możliwość, aby ta zmienna po przyjęciu tej wartości ciągle ją pamiętała (Aż to zmiany jej wartości)?

Konkretnie chodzi o zmienną 'prot'. Jest mi potrzebna do wyświetlenia tekstu na drugiej formatce. Wykorzystywana jest przez publicznego stringa, niestety już jako null. Kod:

public void Bt1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 65; i++)
            {
                this.Width -= 10;
                System.Threading.Thread.Sleep(5);
            }
            prot = "Telnet";
            Thread.Sleep(30);

            this.Visible = false;
            this.ShowInTaskbar = false;
            Protocol protocol = new Protocol();
            protocol.StartPosition = FormStartPosition.Manual;
            x = 100;
            y = 100;
            protocol.Location = new Point(x, y);
            this.TopMost = true;
            protocol.Show();            

            this.Close();
         }

String wykorzystywany do przeniesienia wartości:

        public string nazwa
        {
            get { return prot; }
        }

A tutaj kod drugiej formy:

        public Protocol()
        {
            InitializeComponent();
            TCP_IP mleko = new TCP_IP();
            prot = mleko.nazwa;
            lbl1.Text = prot;
            this.tm1.Enabled = true;
            
        }

Jeśli napisałem coś niezrozumiale to proszę o krytykę. Za pomoc z góry dziękuję :)

0

nie mam pojęcia o co Ci chodzi

jaguar1231 napisał(a):

Jest jakaś możliwość, aby ta zmienna po przyjęciu tej wartości ciągle ją pamiętała (Aż to zmiany jej wartości)?

to normalne zachowanie każdej zmiennej

jaguar1231 napisał(a):

Niestety po inicjowaniu drugiej formatki musiałem dodać referencję i wartość zapisywana w tej zmiennej znika.

czemu "niestety", czemu "musiałeś" i gdzie masz tę referencje

0

Już tłumaczę. Chodzi konkretnie o ten fragment kodu:

TCP_IP mleko = new TCP_IP();
prot = mleko.nazwa;

Z tego co pamiętam, jest to rodzaj referencji. W każdym razie przez "To" zmienna staje się null'em, a public String przyjmuje przez to później wartość null.

1

W pliku Program.cs umieść
public static string prot {get; set;}
Poza tym nie widzę tu deklaracji pola prot

0

Żadna zmienna nie traci wartości. Ty po prostu w konstruktorze Protocol tworzysz sobie nowy obiekt formy TCP_IP, w którym wszystkie zmienne mają domyślne wartości, więc prot jest równe null.

0

hansonq
Pomogło rzeczywiście :) Nie spodziewałem się, że rozwiązanie będzie tak proste. Postaram się pamiętać takie rzeczy na przyszłość.
Zmienna prot była wykorzystywana tutaj:

public Protocol()
        {
            InitializeComponent();
            lbl1.Text = Program.prot;
            this.tm1.Enabled = true;
            
        }

Jeśli o to chodziło "pole".

somekind - Zdawałem sobie z tego sprawę, tylko nie wiedziałem jak to opisać. Tak czy siak nie wiedziałem jak ominąć ten problem.

Dziękuję serdecznie za pomoc :)

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