Avatar
RainbowShaggy:

Ahoj, potřeboval bych poradit. Mám třídu a v ní nějaký text, který bych potřeboval vypsat v hlavním Formu do Labelu. Takže bych potřeboval ten Label nějak načíst v té vedlejší třídě, ale vůbec netuším jak. Popřípadě pokud by to šlo, tak uložit ten text do proměnné a tu proměnnou vytáhnout v tom hlavním Formu a vypsat zase do Labelu.

Za všechny odpovědi budu moc rád a jelikož je už dost pozdě, tak se omlouvám jestli je dotaz dost divně napsaný, což určitě je :) Díky

 
Odpovědět 26.1.2014 1:47
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na RainbowShaggy
Jan Vargovský:

No dotaz je určitě divně napsaný, to máš pravdu :D

Udělej si normalně propertu (vlastnost) v té třídě a asi používáš tu instanci ve formuláři, tak nastavíš tomu labelu vlastnost text na tu vlastnost co je v té tvé třídě.

 
Nahoru Odpovědět 26.1.2014 1:59
Avatar
RainbowShaggy:

Tak teď si říkám taky co jsem to napsal, ale to vždycky, když už skoro spím :D
Mno ve které třídě mám udělat tu vlastnost? Mám dvě, defaultní Form1.cs a player.cs.
Jinak jsem zkoušel včera pak tohle:
Form1.cs

public void StatusUpdate (string text)
{
  status1.Text = text;
}

player.cs:

Form1 statusik = new Form1();
statusik.StatusUpdate("Nejaky text");
 
Nahoru Odpovědět 26.1.2014 9:02
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na RainbowShaggy
Petr Nymsa:

Nemůžeš ale přeci ve třídě Player založit celý Form znovu. Do třídy player si předáš buď celý Form ale přehlednější by bylo předat jenom třeba ten label.

Každopádně návrhově to není úplně dobré. Player přeci nemá nic zobrazovat, o to se stará nějaký manažer vykreslování. Tj ideálně by jsi měl reagovat na změny hráče pomocí událostí

Nahoru Odpovědět 26.1.2014 10:59
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
RainbowShaggy:

Dobře, tak jak mám teda nějaký text co je ve třídě player.cs (není to třída o hráči, ale přehrávači) vypsat v labelu, který se jmenuje status1 (Funguje jen ve Form1.cs). Myslel jsem, že to půjde třeba uložit do nějaké proměnné která půjde pak použít ve Form1.cs

 
Nahoru Odpovědět 26.1.2014 11:17
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na RainbowShaggy
Jan Vargovský:
class Player
    {
        public Label Label { get; set; }
    }
public partial class Form1 : Form
    {
        Player p = new Player();
        public Form1()
        {
            InitializeComponent();
            p.Label = label1;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            p.Label.Text = "blablabla";
        }
    }
Editováno 26.1.2014 12:37
 
Nahoru Odpovědět 26.1.2014 12:37
Avatar
RainbowShaggy:

Ah díky moc, jen taková maličká věc. Co tam mám ještě přidat, aby se v tom labelu vypsala proměnná status, která je ve třídě player.cs

 
Nahoru Odpovědět 26.1.2014 13:01
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na RainbowShaggy
Jan Vargovský:

Existuje tu tlačítko odpovědět.

A co by? Máš tam referenci na instanci toho labelu. Takže cokoliv s tím labelem uděláš v té třídě Player se promítne i ve formu...

 
Nahoru Odpovědět 26.1.2014 13:46
Avatar
Odpovídá na Jan Vargovský
RainbowShaggy:

Jop na odpovědět, jsem zapomněl. Jinak už jsem na to přišel, tak díky moc :)

 
Nahoru Odpovědět 26.1.2014 14:05
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.