Přenos proměnných C# ve VS Vyřešeno
Přenos proměnných C# ve VS
Zdravím,
potřeboval bych přenést proměnné mezi dvěma form ve Visual Studiu, ve form1 mám proměnou X, a já bych potřeboval aby se tato proměnná propojila s proměnou Y ve form2 a obě měli stejnou hodnotu a obě se měnili současně z form2. Proměnou X budu mít naplněnou, např. X = 1, a potřeboval bych aby se při otevření form2 proměnná Y taky změnila na 1 a následné editace Y na form2 by vedla i ke změně X na form1.
Děkuji za každou radu.
potřeboval bych přenést proměnné mezi dvěma form ve Visual Studiu, ve form1 mám proměnou X, a já bych potřeboval aby se tato proměnná propojila s proměnou Y ve form2 a obě měli stejnou hodnotu a obě se měnili současně z form2. Proměnou X budu mít naplněnou, např. X = 1, a potřeboval bych aby se při otevření form2 proměnná Y taky změnila na 1 a následné editace Y na form2 by vedla i ke změně X na form1.
Děkuji za každou radu.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Přenos proměnných C# ve VS
Zdravím,
tak si tu proměnnou vlož do nějaký statický třídy, pak k ní bude jen jedna cesta
tak si tu proměnnou vlož do nějaký statický třídy, pak k ní bude jen jedna cesta
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Přenos proměnných C# ve VS
Dobře, tak jsme to zkusil takto:
A dále se snažím vypsat, přičítat a odečítat proměnné
Tohle mi ještě funguje, vypíše proměnnou do textboxu.
Ale už nevím jak to udělat, aby se přičtené a odečtené hodnoty změnili i ve třídě. Sice jsem nějaké řešení vymyslel, ale nikdy po zavření a znovu otevření okna form2 nezůstala proměnná jako před zavřením, ale vrátila se na původních 50000.
Kód: Vybrat vše
private int zamestnanci1;
public int zamst;
public tovarna()
{
zamestnanci1 = 50000;
}
public void prictiZamestnance1()
{
zamestnanci1 = zamestnanci1 + zamst;
}
public void odectiZamestnance1()
{
zamestnanci1 = zamestnanci1 - zamst;
}
public int VypisPocetZamst()
{
return zamestnanci1;
}
A dále se snažím vypsat, přičítat a odečítat proměnné
Kód: Vybrat vše
public Tovarna1(Form callingForm)
{
InitializeComponent();
zamestnanci = tv.VypisPocetZamst();
textBox1.Text = zamestnanci.ToString();
}
Tohle mi ještě funguje, vypíše proměnnou do textboxu.
Ale už nevím jak to udělat, aby se přičtené a odečtené hodnoty změnili i ve třídě. Sice jsem nějaké řešení vymyslel, ale nikdy po zavření a znovu otevření okna form2 nezůstala proměnná jako před zavřením, ale vrátila se na původních 50000.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Přenos proměnných C# ve VS
neposlal si cel kod, z tohohle nepoznám v čem je chyba
fígl je v tom, že uděláš statickou metodu a do ní statický vlastnosti
fígl je v tom, že uděláš statickou metodu a do ní statický vlastnosti
C# píše:public static class nastaveni {
public static int Sirka{get;set;}
public static int Vyska{get;set;}
}
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Přenos proměnných C# ve VS
Já to vůbec nevím jak na to
jako třídu mám tohle:
A form kde chci aby vše bylo vypsáno mám takto:
Jak jsme brali třídy ve škole tak jsem to moc nepobral a teď vážně nevím jak s tím pohnout. Když z toho udělám public static, píše mi to zase jiné chyby.

Kód: Vybrat vše
namespace Projekt
{
class tovarna
{
private int zamestnanci1;
public int zamst;
public tovarna()
{
zamestnanci1 = 50000;
}
public void prictiZamestnance1()
{
zamestnanci1 = zamestnanci1 + zamst;
}
public void odectiZamestnance1()
{
zamestnanci1 = zamestnanci1 - zamst;
}
public int VypisPocetZamst()
{
return zamestnanci1;
}
}
}
A form kde chci aby vše bylo vypsáno mám takto:
Kód: Vybrat vše
namespace Projekt
{
public partial class Tovarna1 : Form
{
int zamestnanci;
tovarna tv = new tovarna();
public Tovarna1(Form callingForm)
{
InitializeComponent();
zamestnanci = tv.VypisPocetZamst();
textBox1.Text = zamestnanci.ToString();
}
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
tv.zamst = Convert.ToInt32(numericUpDown1.Value);
zamestnanci = tv.prictiZamestnance1(); //Error 24 Cannot implicitly convert type 'void' to 'int'
textBox1.Text = zamestnanci.ToString();
tv.VypisPocetZamst = zamestnanci; //Error 25 Cannot assign to 'VypisPocetZamst' because it is a 'method group'
}
private void button2_Click(object sender, EventArgs e)
{
}
}
}
Jak jsme brali třídy ve škole tak jsem to moc nepobral a teď vážně nevím jak s tím pohnout. Když z toho udělám public static, píše mi to zase jiné chyby.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Přenos proměnných C# ve VS
uf, to je vcelku špatně :(
v konstruktoru bys měl mít parametr, kterým bys přiřadil základní hodnotu do zamestnanci, toto je takové skryté chování, které nikdo neočekává (pokud to není v zadání, které neznám...)
metoda tovarna.prictiZamestnance1 má návratový typ void (nic nevrací) takže to nemůžeš přiřadit do proměnné - musel bys zavolat tu metodu prictiZamestnance() a potom přiřadit zamestnanci=tv.VypisPocetZamst()
proměnná zamestnanci je v tom formu navíc, používej ty metody/vlastnosti z té třídy tovarna
ta třída Tovarna1 je nejspíš ten druhej form že?
zkus tam dát vzor Form1 (nebo ten hlavní form), můžeš potom zdědit vlastnosti od toho hlavního formu a nemusíš tak zakládat novej objekt tovarna
v konstruktoru bys měl mít parametr, kterým bys přiřadil základní hodnotu do zamestnanci, toto je takové skryté chování, které nikdo neočekává (pokud to není v zadání, které neznám...)
metoda tovarna.prictiZamestnance1 má návratový typ void (nic nevrací) takže to nemůžeš přiřadit do proměnné - musel bys zavolat tu metodu prictiZamestnance() a potom přiřadit zamestnanci=tv.VypisPocetZamst()
proměnná zamestnanci je v tom formu navíc, používej ty metody/vlastnosti z té třídy tovarna
ta třída Tovarna1 je nejspíš ten druhej form že?
zkus tam dát vzor Form1 (nebo ten hlavní form), můžeš potom zdědit vlastnosti od toho hlavního formu a nemusíš tak zakládat novej objekt tovarna
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Přenos proměnných C# ve VS
Tak jsem to zkusil ještě jinak, tady je třída:
Takhle to i funguje, otevřu form, přičtu hodnoty ale když form zavřu a znova otevřu, hodnoty jsou zpátky původní.
A ano, tovarna1 je form2, potřebuji totiž přejit z form1 na form2, kde upravím tu hodnotu zamestnanci. Tu potom potrebuji si zavolat na form1 pro výpočty, ale editaci potřebuji na form2. Editace sice funguje ale nefunguje to uložení, takže zavřu form2, znova otevřu a je tam zase pořád stejná hodnota jako předtím bez ohledu na editaci. Já tomu pořád nemohu nějak přijít na kloub
Kód: Vybrat vše
namespace Projekt
{
class tovarna
{
private int zamestnanci1;
public int zamst;
public tovarna()
{
zamestnanci1 = 50000;
zamst = 0;
}
public int Zamestnanci
{
get
{
return zamestnanci1;
}
set
{
zamestnanci1 = value;
}
}
public int prictiZamestnance1()
{
return zamestnanci1 = zamestnanci1 + zamst;
}
public int odectiZamestnance1()
{
return zamestnanci1 = zamestnanci1 - zamst;
}
}
}
Takhle to i funguje, otevřu form, přičtu hodnoty ale když form zavřu a znova otevřu, hodnoty jsou zpátky původní.
Kód: Vybrat vše
namespace Projekt
{
public partial class Tovarna1 : Form
{
int zamestnanci;
tovarna tv = new tovarna();
public Tovarna1(Form callingForm)
{
InitializeComponent();
zamestnanci = tv.Zamestnanci;
textBox1.Text = zamestnanci.ToString();
}
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
tv.zamst = Convert.ToInt32(numericUpDown1.Value);
zamestnanci = tv.prictiZamestnance1();
textBox1.Text = zamestnanci.ToString();
tv.Zamestnanci = zamestnanci;
}
private void button2_Click(object sender, EventArgs e)
{
tv.zamst = Convert.ToInt32(numericUpDown1.Value);
zamestnanci = tv.odectiZamestnance1();
textBox1.Text = zamestnanci.ToString();
}
}
}
A ano, tovarna1 je form2, potřebuji totiž přejit z form1 na form2, kde upravím tu hodnotu zamestnanci. Tu potom potrebuji si zavolat na form1 pro výpočty, ale editaci potřebuji na form2. Editace sice funguje ale nefunguje to uložení, takže zavřu form2, znova otevřu a je tam zase pořád stejná hodnota jako předtím bez ohledu na editaci. Já tomu pořád nemohu nějak přijít na kloub

- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Přenos proměnných C# ve VS
udělej objekt ve formu1 a ten form2 dej jako potomka z form1
pak by mělo jít ve formu2 přistoupit k vlastnostem z formu1 (objekt tovarny)
mě to normálně jde :-)
pak by mělo jít ve formu2 přistoupit k vlastnostem z formu1 (objekt tovarny)
mě to normálně jde :-)
C# píše: public partial class Form1 : Form
{
public Tovarna tv = new Tovarna();
}
public partial class Form2 : Form1
{
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(tv.Zamestnanci.ToString());
}
}
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Přenos proměnných C# ve VS
Teď nevím jestli to já správně chápu, mě to funguje, funguje mi přičítání, jenže při zavření form2 se proměnná resetuje na původní nastavení. Zkusil jsem do kódu přidat tohle na form2:
Potom to na form2 vypadá následovně:
Původní hodnota je 50 000 a přičítání i odečítání funguje, jenže po zavření a znovu otevření form2 je hodnota opět 50000.
Kód: Vybrat vše
private void button1_Click(object sender, EventArgs e)
{
int zamst = Convert.ToInt32(numericUpDown1.Value);
zamestnanci = tv.Zamestnanci + zamst;
textBox1.Text = zamestnanci.ToString();
tv.Zamestnanci = zamestnanci;
textBox2.Text = tv.Zamestnanci.ToString(); //Tímto si volám proměnnou ze třídy
}
Potom to na form2 vypadá následovně:
Původní hodnota je 50 000 a přičítání i odečítání funguje, jenže po zavření a znovu otevření form2 je hodnota opět 50000.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Přenos proměnných C# ve VS
jojo, jsem si to nevyzkoušel a zkoušel to z hlavy a takhle to dopadlo :(
tak tam dej ten static, s tim mi to funguje
tak tam dej ten static, s tim mi to funguje
C# píše: public partial class Form1 : Form
{
public static tovarna tv = new tovarna();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(tv.Zamestnanci.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
new Form2().Show();
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
numericUpDown1.Value = Form1.tv.Zamestnanci;
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
Form1.tv.Zamestnanci = (int)numericUpDown1.Value;
}
}
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Přenos proměnných C# ve VS
Moc děkuji :-)
Každopádně mám ještě jednu chybu a to tuto:
Chyba je ve form1 u této části:
Pochopil jsem to tak, že mám chybu asi ve třídě, ale žádná úprava mi nepomohla, spíše ještě zhoršila.
Každopádně mám ještě jednu chybu a to tuto:
Inconsistent accessibility: field type 'Projekt.tovarna' is less accessible than field 'Projekt.Form1.tv'
Chyba je ve form1 u této části:
Kód: Vybrat vše
public static tovarna tv = new tovarna();
Pochopil jsem to tak, že mám chybu asi ve třídě, ale žádná úprava mi nepomohla, spíše ještě zhoršila.
Kód: Vybrat vše
namespace Projekt
{
class tovarna
{
private int zamestnanci1;
private int zamestnanci2;
private int zamestnanci3;
private int zamestnanci4;
public int zamst;
public tovarna()
{
zamestnanci1 = 50000;
zamst = 0;
}
public int Zamestnanci
{
get
{
return zamestnanci1;
}
set
{
zamestnanci1 = value;
}
}
public int prictiZamestnance1()
{
return zamestnanci1 = zamestnanci1 + zamst;
}
public int odectiZamestnance1()
{
return zamestnanci1 = zamestnanci1 - zamst;
}
}
}
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Přenos proměnných C# ve VS
jojo ještě musíš dát public class tovarna namísto private
nevim proč, ale jinak to nefunguje
nevim proč, ale jinak to nefunguje
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 6
- 3128
-
od JHH1977
Zobrazit poslední příspěvek
02 bře 2025 19:45
-
- 7
- 4128
-
od petr22
Zobrazit poslední příspěvek
18 srp 2024 10:25
-
-
Co jako první udělat přenos tel čísla nebo aktivaci sim
od p3v4x » 04 říj 2024 15:26 » v Mobily, tablety a jiná přenosná zařízení - 1
- 3197
-
od Zivan
Zobrazit poslední příspěvek
04 říj 2024 15:55
-
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů