C# - Windows Forms a volanie metod majitela okna – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# - Windows Forms a volanie metod majitela okna – C / C++ – Fórum – Programujte.comC# - Windows Forms a volanie metod majitela okna – C / C++ – Fórum – Programujte.com

 

t3rb10
Duch
28. 9. 2006   #1
-
0
-

no, nemam 100% kontrolu nad celym C# kodom, bo programujem v Baltie 4 C#, kt. bezi na .NET 1.1. snazim sa tam v 3D rezime implementovat Okna. okno som si nadesignoval vo SharpDevelop 1.1. asi takto nejak je kod (Form1 je vnorene, inak to neslo, ale funguje to)



namespace BaltieProject {
...
public class BaltieProjectForm : BaltieForm {
...
public class Form1 : System.Windows.Forms.Form { ... }
}
}

okno zobrazim normalne


Form1 wokno = new Form1();
wokno.ShowDialog();

ale neviem ako dostat do BaltieProjectForm nejake udaje z Form1. potrebujem dosiahnut aby Form1 sluzil na nastavenie hry, stlaci sa Play, Form1 sa skryje a zobrazi sa BaltieProjectForm s hrou, po skonceni hry sa BaltieProjectForm zase skryje (stym nieje problem) a znova sa zobrazi Form1. ked som skusal vo vnutry triedy Form1 volat this.Owner, this.Parent alebo this.ParentForm, tak to nefungovalo. existuje este nejaky insi sposob ako odkazat na nadradenu triedu? dakujem

Nahlásit jako SPAM
IP: ...–
DeaLer+2
Hero
28. 9. 2006   #2
-
0
-

Nechápu co přesně požaduješ (respective domejšlím si asi deset možností a na všechno odpovídat nebudu) - zkus to blíž popsat. Jakej fomulář ze kterého voláš.

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
t3rb10
Duch
28. 9. 2006   #3
-
0
-

V BaltieProjectForm vytvorim novu instanciu Form1 a zavolam ShowDialog() a vyskoci mi okno. A teraz som updatol Baltie 4 C# a uz mi nefunguje skryvanie toho okna :(, ale to je nepodstatne.

edit: Vsetky prvy su definovane ako Private, kebyze tlacitko Play! zmenim na public a event OnClick nastavim z BaltieProjectForm?

Nahlásit jako SPAM
IP: ...–
DeaLer+2
Hero
29. 9. 2006   #4
-
0
-

t3rb1 napsal:

v BaltieProjectForm vytvorim novu instanciu Form1 a zavolam ShowDialog() a vyskoci mi okno. a teraz som updatol Baltie 4 C# a uz mi nefunguje skryvanie toho okna :(, ale to je nepodstatne.

edit: vsetky prvy su definovane ako Private, kebyze tlacitko Play! zmenim na public a event OnClick nastavim z BaltieProjectForm?



Jestli tě chápu dobře, tak ti tohle pomůže, ale není to moc doporučovanej postup. Ve form1 si vytvoř vlastní metodu pro zobrazení ve které jako parametr předáš ten BaltieProjectForm (ten nadřazenej formulář).



public void ShowDialog(BaltieProjectForm form)
{
this.ShowDialog();

// proměnná, kterou si vytvoř - nesmí být lokální
this.baltieForm = form;
}


V dalších metodách pak můžeš k proměnné baltieForm přistupovat a libovolně formulář aktualizovat.

Snad to pomohlo.

Nahlásit jako SPAM
IP: ...–
Dušan Janošík | web: djanosik.cz, @djanosik
t3rb10
Duch
29. 9. 2006   #5
-
0
-

DeaLer napsal:
Jestli t? ch?pu dob?e, tak ti tohle pom??e, ale nen? to moc doporu?ovanej postup. Ve form1 si vytvo? vlastn? metodu pro zobrazen? ve kter? jako parametr p?ed?? ten BaltieProjectForm (ten nad?azenej formul??).



public void ShowDialog(BaltieProjectForm form)
{
this.ShowDialog();

// prom?nn, kterou si vytvo? - nesm? b?t lok?ln?
this.baltieForm = form;
}


V dal??ch metod?ch pak m??e? k prom?nn? baltieForm p?istupovat a libovoln? formul?? aktualizovat.

Snad to pomohlo.



toto som pridal do triedy Form1


public BaltieForm baltieForm;

public void Zobraz(BaltieForm form)
{
this.baltieForm = form;
this.ShowDialog();
}

...

void BtExitClick(object sender, System.EventArgs e)
{
this.baltieForm.Koniec();
}

takto vytvaram okno
Form1 wokno = new Form1();

wokno.Zobraz(this);

a pri this.baltieForm.Koniec(); to hlasi

'{param}' neobsahuje definici pro '{param}'.


neexistuje nejaky sposob ako predat tej triede odkaz na funkciu? teda by som si vytvoril funkciu v Baltie triede, ktora by bola "rozcestnik", a Form1 by som predal tu funkciu a v btExitClick by sa nejakym sposobom zavolala ta funkcia a s parametrami (dalo by sa pouzit pretazovanie?)

edit: teraz som skusil this.baltieForm.Close(); a to funguje v pohode, takze asi mozem pouzit len uz vytvorene funkcie...
edit: som ja lama, som tam daval BaltieForm a neslo to, ale ide to s BaltieProjectForm, som to zle opisal. dakujem za pomoc pri rieseni problemu

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 57 hostů

Podobná vlákna

Windows forms — založil Johnnny

C# Windows Forms kreslení — založil mstarman

Databáze s Windows Forms — založil Ant

V Monu najednou nefunguje Windows Forms — založil Matěj Andrle

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý