Diskuze: více formůlářů v jednom okně

C# .NET .NET (C# a Visual Basic) více formůlářů v jednom okně American English version English version

Avatar
tomekmichalhu:

Dobrý den, dá se v C# nějak udělat aby byl nějaký formulář a po stisknutí tlačítka by zmizel a objevil se jiný? (v prvním by bylo třeba tlačítko a textbox do kterého by uživatel zadal svoje jméno a ve druhém by byl formulář aplikace)

 
Odpovědět 28.5.2014 6:14
Avatar
Odpovídá na tomekmichalhu
Michal Žůrek (misaz):

samozřejmě

From2 f = new From2();
f.Show();
this.Close();
Nahoru Odpovědět  -1 28.5.2014 6:35
Nesnáším {}, proto se jim vyhýbám.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na tomekmichalhu
Petr Nymsa:

Mnohem lepší je aktuální form nezavírat a druhý zobrazit pomocí ShowDialog(). Aktuální From se tím zneaktivní - tj klasické chování desktop aplikací

Nahoru Odpovědět 28.5.2014 8:07
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
tomekmichalhu:

já bych potřeboval aby oboje obsluhovala 1 classa, nebo abych dostal data z jedný classy do druhý

 
Nahoru Odpovědět 28.5.2014 11:39
Avatar
tomekmichalhu:

tak to už jsem vyřešil konstruktorem ale objevil se další problém, první okno nezmizí. tohle je první okno:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace mygame
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 okno2 = new Form2(textBox1.Text);

            okno2.ShowDialog();
        }
    }
}

a tady druhé (zatím jen vypíše do labelu to co jsem zadal v první okně do textBoxu):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace mygame
{
    public partial class Form2 : Form
    {
        string name = "jmeno";
        string name2;

        public Form2(string sName)
        {
            name = sName;
            name2 = sName2;
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            label1.Text = name;
        }
    }
}
 
Nahoru Odpovědět 28.5.2014 15:19
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na tomekmichalhu
Jan Vargovský:

A proč by mělo zmizet, když ho nikde nerušíš a ani nevoláš Hide()?

 
Nahoru Odpovědět 28.5.2014 15:22
Avatar
tomekmichalhu:

přidal jsem do programu:

Form1 okno1 = new Form1();
okno1.Hide();

ale nic se nezměnilo, jak udělám aby úplně zmizelo?

Editováno 28.5.2014 15:43
 
Nahoru Odpovědět 28.5.2014 15:42
Avatar
Odpovídá na tomekmichalhu
Vojtěch Kalivoda:

Pokud to okno chceš zavřít udělal bych to jak píše misaz.

 
Nahoru Odpovědět 28.5.2014 15:51
Avatar
Martin
Člen
Avatar
Martin:

C# prakticky neznám, nevím jestli je možno použít ale co okno1.visible = false;

Nahoru Odpovědět 28.5.2014 15:58
Je jedno co děláš, ale záleží jak dobře to umíš prodat.
Avatar
tomekmichalhu:

no tak jsem tam dal this.Close(); a vyplo mi to celou aplikaci (mám pocit že se to první okno chová jako metoda main)

 
Nahoru Odpovědět 28.5.2014 16:08
Avatar
tomekmichalhu:

už jsem to vyřešil, dal jsem this.visible = false;

 
Nahoru Odpovědět 28.5.2014 16:12
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na tomekmichalhu
Jan Vargovský:

Nějaký form musí být hlavní...

private void button1_Click(object sender, EventArgs e)
         {
             Hide();
             Form2 okno2 = new Form2(textBox1.Text);
             okno2.ShowDialog();
         }

To je vše.

 
Nahoru Odpovědět 28.5.2014 16:13
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 12 zpráv z 12.