Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Využij akce až 80 % zdarma při nákupu e-learningu - více informací. Zároveň pouze tento týden sleva až 80 % na e-learning týkající se Swift
Avatar
Jan Rathouský:17.10.2020 19:54

Ahoj, potřeboval bych poradit, jak nastavím to, aby, když otevřu ve Form1 panelu Form2 tak ve Form2 mám tlačítko. To když se zmáčkne, tak se z panelu na Form1 Form2 vymaže, a otevře se Form3¨

Tohle je Form1 včetně tlačítka, které otevře v Panelu Form2

{
public partial class Form1 : Form
{
    private Form activeForm;
    public Form1()
    {
        InitializeComponent();
    }

    public void OpenSlaveForm(Form podrizenyForm, object btnSender)
    {

        if (activeForm != null)
        {
            activeForm.Close();
        }
        activeForm = podrizenyForm;
        podrizenyForm.TopLevel = false;
        podrizenyForm.FormBorderStyle = FormBorderStyle.None;
        podrizenyForm.Dock = DockStyle.Fill;
        this.pnlMain.Controls.Add(podrizenyForm);
        this.pnlMain.Tag = podrizenyForm;
        podrizenyForm.BringToFront();
        podrizenyForm.Show();
        string nazev = podrizenyForm.Text.ToUpper();


    }

    private void btnForm1_Click(object sender, EventArgs e)
    {
        OpenSlaveForm(new Forms.Form2(), sender);
    }
}

Toto, je Form2. A tlačítko, které by mělo vymazat přepsat panel na Form1 a otevřít v tomto Panelu Form3 - bohužel mi to otevírá úplně nové okno, a to je špatně.

 public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void btnForm2_Click(object sender, EventArgs e)
    {
        Form1 frm = new Form1();
        frm.OpenSlaveForm(new Forms.Form3(), sender);
        frm.Show();
    }
}

Chci docílit: Snažím se dosáhnout toho, aby se v panelu na Form1 otevírali okna, která vyvolám tlačítkem, které je právě v otevřeném okně.

Editováno 17.10.2020 19:57
 
Odpovědět
17.10.2020 19:54
Avatar
JerryM
Člen
Avatar
JerryM:18.10.2020 13:15

pokud chceš tohle dělat musíš znát handle na dané okno globálně, t.j. vytvořit si globální "statickou" třídu se statickým konstuktorem a statickými proměnnými a tu pak zavolat pokaždé, když chceš získat ukazatel na dané okno

 
Nahoru Odpovědět
18.10.2020 13:15
Avatar
Odpovídá na JerryM
Jan Rathouský:18.10.2020 13:16

Mohl bych tě poprosit o příklad prosím?

 
Nahoru Odpovědět
18.10.2020 13:16
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
JerryM
Člen
Avatar
 
Nahoru Odpovědět
18.10.2020 13:54
Avatar
Odpovídá na JerryM
Jan Rathouský:20.10.2020 14:54

Děkuji za pomoc. Moc děkuji

 
Nahoru Odpovědět
20.10.2020 14:54
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 5 zpráv z 5.