Zdravím, hledal jsem to tu i jinde, ale bez úspěchu, pokud vítě o nějakém zdroji, stačí mi link.
Mám následující problém
1) Hlavní FORM, kde se vykonává komunikace s MySQL serverem a po sériové lince.
2) FORM pro nastavení parametrů MySQL, tam bych chtěl měnit proměnné defnované jako public v třídě hlavníh formu, bohužel mi to ale jaksi nejde... inteligentní doplnění kódu mi ani nenabídne form1 (v druhém formu samozřejmě)
Předem dekuji
Karri
Fórum › .NET
Použití proměnných z jiného FORMu
Nevidim problém, preto si niesom istý či som správne pochopil.
Vytvorením nového formu vlastne vytvaraš novú triedu, ktorá dedí od form. Jednoducho otvoríš kód a pridáš metody a premenné.
V hlavnom forme vytvoríš instanci a jednoducho použiješ tebou vytvorené verejné metody a premenné.
ps. nenapisal si jazyk, to by mi dosť pomohlo pri písaní odpovede ;)
Právě tak mi to nechodí, uvedu příklad:
Tohle mam ve formu1
public partial class Form1 : Form
{
bool stisknuto = false;
int xpos, ypos;
string received_message = String.Empty;
public string nejaka_promenna;
a ted bych ve zdorojaku pro form2 chtel napsat neco jako
nejaka_promenna = "ahoj ted jsem naplnil promennou";
ale nejde to píše mi to že proměnná není známá v aktuálním kontextu...
Zdar, jestli tě dobře chápu, tak chceš z druhýho formuláře (Form2) přistupovat k veřejným členům hlavního formuláře (Form1). Musíš druhýmu formuláři předat instanci hlavního formuláře.
Form1
public partial class Form1 : Form
{
#region Proměnné
public string formText = "Druhý formulář";
#endregion
/// <summary>
/// Inicializuje novou instanci třídy <see cref="Form1"/>.
/// </summary>
public Form1()
{
// inicializuje komponenty
InitializeComponent();
}
/// <summary>
/// Při kliknutí na tlačítko otevře druhý formulář.
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
// vytvoří instanci druhého formuláře a předá mu instanci hlavního formuláře
Form2 form = new Form2(this);
// zobrazí formulář
form.Show();
}
}
Form2
public partial class Form2 : Form
{
#region Proměnné
Form1 mainForm;
#endregion
/// <summary>
/// Inicializuje novou instanci třídy <see cref="Form2"/>.
/// </summary>
/// <param name="mainForm">Instance hlavního formuláře.</param>
public Form2(Form1 mainForm)
{
// inicializuje komponenty
InitializeComponent();
// předá instanci hlavního formuláře
this.mainForm = mainForm;
}
/// <summary>
/// Při načtení formuláře změní jeho titulek.
/// </summary>
private void Form2_Load(object sender, EventArgs e)
{
// změní titulek formuláře
this.Text = this.mainForm.formText;
}
}
Se zbytkem si určitě poradíš.
Ještě jednou si prohlídni kód druhýho formuláře, musíš tam přidat konstruktor, kterej ten argument zpracuje. Kdyby ti to nebylo jasný, tak pisni na ICQ ... nemá smysl to řešit tady.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Použití funkce z jiného formu na druhý — založil Termoval
Přístup k tlačítku z jiného formu — založil Peet
C# - nacteni promene z jineho formu — založil wywojka
C# Volání funkce jiného formu — založil Yimo
C# - obnovení datagridview z jiného formu — založil Rastlyn
Moderátoři diskuze