IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Dominik
Člen
Avatar
Dominik:5.11.2020 11:16

Ahoj. Po dlouhý době si zase nevím rady, tak prosím o pomoc :-D

Program funguje takto:

Uživatel zvolí tlačítko a program toto tlačítko zapíše / uloží do textového souboru (StreamWriter).
V dalším spuštění programu chci aby všechny dříve zvolená tlačítka (uložená jako textové soubory) byli například zelené... :-D
Úkol tedy spočívá v tom, aby program přečetl název tlačítka zapsaného v textovém souboru (StreamReader) a upravoval vlastnosti daného tlačítka...

Problém:

Program (nejspíše moji chybou) nedokáže pracovat s textem jako tlačítkem... Tedy nemohu pomocí proměnné string upravovat vlastnosti tlačítka...

Zkusil jsem: //ULOŽIT

StreamWriter sw = new StreamWriter("tla­čítko.txt", false);
sw.WriteLine(but­ton1);
sw.Close();

//NAČÍST

StreamReader sr = new StreamReader("tla­čítko.txt");
Button btn = (Button)sr.Re­adLine();

Tento primitivní kód jsem vyzkoušel a hlásí to chybu... :-D prosím o pomoc. :)

 
Odpovědět
5.11.2020 11:16
Avatar
zelvicek
Člen
Avatar
zelvicek:5.11.2020 12:50
  1. používej konstrukci "using".
  2. Díval ses do toho vytvořeného souboru? Myslíš, že uložená informace je, alespoň teoreticky, dostatečná pro identifikaci tlačítka? Dokázal bys to tlačítko nějak určit ty sám na základě informací z vytvořeného souboru?
  3. Zkus se nad celou koncepcí více zamyslet.
  4. Osobně bych se zaměřil na System.Window­s.Forms.Control­.Tag a System.Window­s.Forms.Control­.Controls.
Editováno 5.11.2020 12:50
 
Nahoru Odpovědět
5.11.2020 12:50
Avatar
Dominik
Člen
Avatar
Odpovídá na zelvicek
Dominik:5.11.2020 13:53

Ahoj, díky za rady. Ve vytvořeném souboru se píše název tlačítka - jak ho volám v kódu... takže v kódu na něj volám "button1" a v souboru se píše "button1".

 
Nahoru Odpovědět
5.11.2020 13:53
Avatar
Bugmaster
Člen
Avatar
Odpovídá na Dominik
Bugmaster:6.11.2020 18:14

Takže metoda ReadLine() ti zřejmě vrátí string "button1".

Tenhle string se následně snažíš přetypovat na butónek... takže InvalidCastEx­ception.

Nemůžeš to takhle napřímo přetypovat. Budeš muset nějak podle přečtenýho textu dohledat příslušný button. Napadají mě dvě cesty:

  1. Použít nějakou vestavěnou funkci pri hledání controlu podle jeho jména (třeba Control.Control­Collection.Find Control.Control­Collection.Find )
  2. Sestavit si slovník mapující jméno -> button

Čemu ale nerozumím: k čemu je tohle dobrý? To chceš uživateli zvýraznit, co naposled dělal?

 
Nahoru Odpovědět
6.11.2020 18:14
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 4 zpráv z 4.