Dobrý den,
ukotvil jsem každý nově vytvořený form2 - takto:
this.panel1.Controls.Add(p);
(p je form2). V panelu jsou ale všechny formy2 aktivní - lze alespoň
nějak manuálně deaktivovat form? Aktivovat je snadné - ale naopak nevím
proč - ne. Děkuji za každou pomoc.
Ne mám na mysli Activate() a Deactivate() - prostě když kliknu mimo
aplikaci - aplikace trochu zešediví - je neaktivní - a naopak když do ní
kliknu, tak se zaktivuje - toto mám na mysli normálním chováním, ale form v
panelu se kliknutím mimo něj nedeaktivuje a je stále aktivní,...
No to co má - zaktivuje to form - ten je aktivní pořád,... Právě že
normálně to funguje tak, že kliknu na form - ten se zaktivuje a zbytek
deaktivuje - jenže tyto formy mám dockované v panelu (Formu1). Proto píši
sem,...
Tak ono není co chápat - mám panel a v něm přidám form - jak jsem uved
hoře (meodou Add()). No ale nepřidám jen jeden form, ale více formů. A
všechny tyto formy jsou aktivní - kliknutím mimo do hlavního formu se nic
nestane - kliknutím mimo se zdeaktivuje koráte hlavní form,...
Ale já to potřebuju normálně - kvůli context menu stripu. Dvojklikem
pravým tlačítkem spouštím soubor - takže na pravé tlačítko nemohu dát
ten contextmenu... Totiž to menu mám na dvojklik myši - ale funguje to jen
tím pravým, nebo dvakrát levým a pak jednou pravým,...
No buďto přijít na to, proč dvojklik platí jen pro pravé tlačítko -
či dvojklik levým + klik pravým - sám si to můžeš vyzkoušet (jedná se o
spuštení programu). Pak by se mi uvolnilo pravé tlačítko - contextmenu
strip bych dal pod pravé tlačítko a pak bych to mohl udělat podle tebe. Nebo
pomocí toho UserControl,...
Ještě mám jeden problém - potřebuji zapsat změnu lokace onoho Formu2.
Jenže pod eventem mouse up mi to nepracuje (chci jen aktuální pozici (takže
nějak ji vytahovat z eventu locationchange mi přijde zbytečné) - pokud dojde
ke změně,...). Tak mě napadá dát to pod mousemove - s podmínkou jeli
stisknuta myš. Jak by ta podínka měla vypadat? Děkuji.
Sem to zkusil a funguje mi to. Normálně tvořim ChildForm.
V konstruktoru Form1
TransparencyKey = Color.Ivory;// nastavím transparenci
MdiClient Client = new MdiClient();// nastavím že form1 je Mdi klientemthis.Controls.Add(Client);
// a pak to přidáváš takto:this.p = new Form2(Path.GetFileName(s), s, this);
this.p.MdiParent = this;
this.panel1.Controls.Add(p);
this.p.Show();
Přidávám to na panel, který překresluje Form1. Souřadnice se vypisují
do Output okna.
Tak mě to nejde - přetáhnu tam jeden soubor a nic,... Krom toho mám to v
try bloku - kde se mi anuluje save.dat - takže vím mohu s jistotou říci, že
to selhalo,...
Tak jsem to trochu opravil - zkomolil jsem to. Eviduji invertní problém -
ještě horší - nyní jsou všechny formy deaktivovány a při jejich
odstranění se nesmažou z save.dat,...
A s čím tedy potřebuješ pomoct? Já nevím co konkrétně chceš a psát
za tebe program nechci.
Normálně si udělej okno a nastav mu IsMdiContainer. Pak si tam dej
nějaký panel a na ten dávej ty další formy jako ChildMdi. Jak jsem ti
psal.
Ty souřadnice zjistíš pak normálně pomocí Left, Top, bere to relativně
od krajů v parent Formu.
Nebo si udělej panel a na ten dávej třeba picture box. Nevím totiž,
jestli není zbytečné vytvářet několik instancí Form2 když ti stačí
pictureBox, který můžeš využít stejně.
Musíš si promyslet, jak to chceš udělat. Nejdřív si udělej nějaký
testovací blok odkud budeš načítat data a až to budeš mít odladěný pak
dodělej přidávání přesouváním, pozicování atd...
Tobě to prostě nějak zázračně funguje - kouknul jsem do tvého
zdrojáku a něco si změnil i ve Form2 - tak jsem myslel, že tam najdu
odpověď - ale vypadáto, že to je jenom z nějakého generátoru - tak se na
to ještě podívám. Děkuji za pomoc.
Pouze jsem do tvého zdrojového kódu připsal řádky, které jsem v
komentáři uvedl. Nebo mi pošli současný zdrojový kód a já se podívám,
kde máš chybu a řeknu ti.
Akoráte s tou pozicí si nerozumíme - potřebuji nějaký event - který
zaznemená změnu pozice. Jenže když použiji event LocationChanged (či tak
nějak), tak mi to vezme úplně všechny pozice - ne jen tu poslední - když
byl form již program položen/ukotven. Proto jsem to dal do mouse up - vezmeto
aktuální pozici pouze po akci mouse up - tedy to byla moje myšlenka - jenže
to nefunguje. Nechápu proč. proto jsem se ptal tebe - jaký event bych měl
použít,...
No jo - pardon,... Sám nevím - co se mu nelíbilo - tvému kódu rozumím a
proto jsem se na to vykašlal - určitě by šlo o nějaký nedopisek. Nyní
bych chtěl dořešit již jen tu pozici,...
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.