Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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
jenda
Člen
Avatar
jenda:19.8.2013 8:42

Můj dotaz se Vám asi bude zdát úplně triviální, ale já do toho pořád ne a ne proniknout :-)

Mám dva Form. V tom jednom (třeba Form1) mám nějaký textBox a do toho uživatel něco napíše. Co mám napsat ve Form2, abych s touto hodnotou mohl pracovat a zobrazit ji na Form2 v nějakém label ?

Díky moc

 
Odpovědět
19.8.2013 8:42
Avatar
Odpovídá na jenda
Michal Žůrek - misaz:19.8.2013 8:55

ve form2 si vytvoříš veřejnou metodu s parametrem co se má a kam napsat, tam si to vyíšeš v druhém formu. Pak na prvním formu zavoláš k instanci druhého tu metodu.

VB.NET:

Public Sub napisNeco(co, kam)
    ' A zde si to nějak zpracuješ
End Sub
Dim f2 As New Form2()
f2.napisNeco("Hello world", doTramtarie)

C#:

public void napisNeco(string co, label kam) {
    // A zde si to nějak zpracuješ
}
Fomr2 f2 = new Form2();
f2.napisNeco("Hello world", doTramtarie);
Editováno 19.8.2013 8:55
 
Nahoru Odpovědět
19.8.2013 8:55
Avatar
jenda
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
jenda:22.8.2013 7:54

Díky moc, hrabu se v tom a výsledek pořád nikde :-) Tomu, co jsi napsal jsem porozuměl, je to přesně to co potřebuji, ale pořád mi to nedělá, to co chci - někde dělám něco blbě.

Mám Form1, kde je textBoxSemChciText a Button. Po kliknutí na Button se má otevřít druhý form s názvem druheokno. Ve formu druhé okno je textBox, do kterého se má zadat text a pak stisknout button. A ten to má poslat do Form1 do textBoxSemChciText a poté zavřít druheokno. Jenže se tam ten text nepřenese :-( Kde dělám chybu?

namespace dvaformy
{
    public partial class druheokno : Form
    {

        public druheokno()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form1 posli = new Form1();
            posli.prenos(textBoxPreneseny.Text);
         }
    }
}
{
    public partial class Form1 : Form
    {
        druheokno dotaz = new druheokno();


        public Form1()
        {
            InitializeComponent();

        }

        public void prenos(string text)
        {
            textBoxSemChciText.Text = text;
            dotaz.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dotaz.Show();
        }
    }
}
 
Nahoru Odpovědět
22.8.2013 7:54
Avatar
Jakub Lásko[Saarix]:22.8.2013 8:37

Upravil bych to takto:

{
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();

         }

         string text;

         private void button1_Click(object sender, EventArgs e)
         {
             druheokenko dotaz = new druheokenko();
             if (dotaz.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
                 text = dotaz.textBox.Text;
                 textBoxSemChciText.Text = text;
             }
         }
     }
 }

Zde ve druhém Formu si klikni na button a ve vlastnostech (properties) si najdi vlastnost DialogResult a zadej tam OK.

namespace dvaformy
 {
     public partial class druheokno : Form
     {

         public druheokno()
         {
             InitializeComponent();
         }
     }
 }
Editováno 22.8.2013 8:37
Nahoru Odpovědět
22.8.2013 8:37
Časem je vše možné.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na jenda
matesax:22.8.2013 8:56

To je tak zbytečné. Udělej mimo vše onen Control. Nastav mu vlastnost Parent na Form, kde cheš, aby byl vidět. No a pak může buď mít vlastnost, co bude vracet hodnotu tohoto Controlu, nebo ještě lépe - Control bude v jediném zaujatém objektu - Main, odtud vytvoříš 2 Formy, jednoho nastavíš jako rodiče a druhému předáš hodnotu Controlu v eventu/metodě/...

Editováno 22.8.2013 8:58
 
Nahoru Odpovědět
22.8.2013 8:56
Avatar
Odpovídá na jenda
Michal Žůrek - misaz:22.8.2013 9:34

ty to totiž posíláš na novou instanci, tedy vytvoříš nový form1. Vytvoř nový konstruktor v druheokno:

poblic druheokno(Form1 instance) {
   this.form = instance;
}

pak tu metod volej na this.form, dále ještě při volání kostruktoru v form1 mu předem this.

druheokno dotaz = new druheokno(this);

při troše štěstí to bude fungovat.

 
Nahoru Odpovědět
22.8.2013 9:34
Avatar
Michal Žůrek - misaz:22.8.2013 9:48

Pokud by ti to předávání instancí nešlo, tak tu to máš celé:
http://misaz.wz.cz/…va_Formy.zip

 
Nahoru Odpovědět
22.8.2013 9:48
Avatar
jenda
Člen
Avatar
Odpovídá na jenda
jenda:22.8.2013 10:31

Díky, to od jakub.lasko funguje :-)

 
Nahoru Odpovědět
22.8.2013 10:31
Avatar
jenda
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
jenda:22.8.2013 12:40

Misaz - díky moc, to funguje

 
Nahoru Odpovědět
22.8.2013 12:40
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.