[C#] předání MDI rodiče do třídy ?

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod L.Drahnik 28. 8. 2012 10:30

Zdravím,
napsal jsem si tento kod, který jsem spouštěl v MainForm, jak ho upravit, abych ho mohl přivolat(použít) ve třídě ?

Kód: Vybrat vše
Monitoring_Module modul = new Monitoring_Module();
            modul.MdiParent = this;           
            modul.Parent = this.panel1;
            modul.Show();
L.Drahnik
Kolemjdoucí

Odeslat příspěvekod Vebloud 28. 8. 2012 13:18

No a zkusil jsi to přesunout sám? Co konkrétně ti nefunguje? A pastn sem kód a chybovou hlášku.
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
Ex-moderátor
Uživatelský avatar

Odeslat příspěvekod L.Drahnik 28. 8. 2012 14:12

MainForm:
Kód: Vybrat vše
private void button1_Click(object sender, EventArgs e)
        {
              MonitoringModule Modul = new MonitoringModule(this);
              Modul.AddNew();
        }

Class:
Kód: Vybrat vše
class MonitoringModule
    {
        private Form mainForm;

        public MonitoringModule(Form form)
        {
            this.mainForm = form;
        }
        public void AddNew()
        {
            Monitoring_Module modul = new Monitoring_Module();
            modul.MdiParent = this.mainForm;           
            modul.Parent = this.mainForm.panel1;      // špatně
            modul.Show();
        }

Error:
Kód: Vybrat vše
Error   1   'System.Windows.Forms.Form' does not contain a definition for 'panel1' and no extension method 'panel1' accepting a first argument of type 'System.Windows.Forms.Form' could be found (are you missing a using directive or an assembly reference?)
L.Drahnik
Kolemjdoucí

Odeslat příspěvekod Wikan 28. 8. 2012 15:44

Na Formu nemáš žádný panel1, tak na něj logicky nemůžeš nic přidávat.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod L.Drahnik 28. 8. 2012 16:45

Když by jsi myslel logicky Ty, tak si domyslíš, že ten panel mam na tom formu, ale v desingeru. Přepnutí na public nepomohlo.
L.Drahnik
Kolemjdoucí

Odeslat příspěvekod Wikan 28. 8. 2012 17:05

V tom případě to ale není Form, ale nějaká jeho odvozená třída. Takže řádek
Kód: Vybrat vše
private Form mainForm;

musíš přepsat tak, ale jsi v něm měl skutečný typ formu, na kterém máš ten panel.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod L.Drahnik 28. 8. 2012 17:27

Díky moc, že mě to netrklo hned :)

-- 28. 8. 2012 19:17 --

Tak problem,
snažil jsem se na to přijít, ale bezuspěšně. Bez erroru to ten panel vezme, ale nezobrazí to na něm. Když tam ten řádek
Kód: Vybrat vše
Modul.Parent = this.mainForm.panel2

nedam, tak se mi to v té Main_Form zobrazí bez problemu.
a nebo, když ten kod přivolám bez třídy, přímo v té formě, zobrazí to i na tom panelu.
L.Drahnik
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků