Avatar billede mcnovy Nybegynder
18. november 2007 - 22:15 Der er 7 kommentarer og
1 løsning

holde focus på form

Hej,

jeg har en form, som åbner en anden form,
det hele sker ved hjælp af at jeg kalder sendkeys.send() fra en anden computer.
jeg skal så fra den anden maskine kunne bruge nogle forskelige funktioner.

det første jeg sender er at den skal åbne en anden form,
og første gang den åbner formen, der er formen også i focus, og det hele fungere som det skal.
men anden jeg jeg kalder formen, så ser det godt nok ud som om at den har focus, men første gang jeg trykker på en tast, så mister den sin focus.

jeg har prøvet at lave en timer som køre flere gange i sekundet,
og den kører this.focus();
men det hjælper ikke lige med det samme.

findes der en metode hvorpå man kan tvinge windows til at holde focus på min form..?

håber min forklaring er til at forstå..
Avatar billede anri Novice
18. november 2007 - 22:36 #1
Hæng mig ikke op på det, for jeg sidder ikke ved min udviklings-pc, men har forms ikke en lotFocus eller leave event som du kan koble dig på?
Prov at sætte din thsi.focus på den, jeg mener jeg har prøvet med controls, men måske virker det også med forms.
Avatar billede mr-kill Nybegynder
19. november 2007 - 00:54 #2
Måske kan du sætte owner på. Jeg er ikke helt sikker på jeg forstår dig ret, men prøv at åbne din form på denne måde:

Form f = new NewMyForm();
t.Owner = this;
t.Show();

Det burde virke hvis formen åbnes fra en anden form, som så kan sættes som owner
Avatar billede montago Praktikant
19. november 2007 - 09:07 #3
dét du skal kigge efter, er ModalDialog - eller Modal i sammenhæng med Form/Window

Modal'e vinduer tvinger dig til at lukke vinduet før du kan komme tilbage til dit hovedvindue (skaberen)

hvis du får brug for det - kan man skifte imellem hvilket vindue som er hovedvindue...

men i dette tilfælde skal din nye form, være Modal
Avatar billede montago Praktikant
19. november 2007 - 09:07 #4
Avatar billede mcnovy Nybegynder
19. november 2007 - 18:08 #5
hmm.. kan godt lyde som om at jeg skal være lidt mere præcis..

anri, jo.. den hedder LostFocus, og den har jeg også prøvet,
men desværre uden held.

mr-kill heller ikke :)

montago
går udfra du mener ShowDialog() den kan jeg ikke bruge (forklaring følger)

jeg prøver lige at være lidt mere præcis.

hvis vi tager det i store træk, så har jeg min Form1 (hovedformen)
og så har jeg min Form2, som er den form jeg kalder, og som skal vises med focus.

hvis form1 har focus, og jeg åbner form2, så har form2 også focus, som den skal have.
men.. hvis et andet program har focus (firefox f.eks) og jeg kalder form2,
så er det stadig Firefox som er i focus (hvis jeg trykker med pil op og ned, så er det firefox som modtager kommandoen, selvom form2 vises (jeg har brugt TopMost på den))

det skal også nævnes at det er form1 som simulere mine kommandoer (dvs det er fra form1 at jeg kalder sendkeys.send() ) <-- derfor kan jeg ikke bruge ShowDialog() da den ikke udføre nogle kommandoer i form1 så længe form2 stadig er åben.

for lige at give jer en idé om hvad form2 er, så er det en alt-tab funktion, bygget efter denne http://www.eksperten.dk/spm/805841 (jeg takker igen for hjælpen mr-kill :) )

udover det, så er det ikke meningen at form1 nogensinde skal være i focus, da det er en form som mere eller mindre arbejder i baggrunden (dvs, den ligger i notification og hygger )

håber det forklare det lidt bedre...

og håber een af jer kan hjælpe med lidt trylleri :)
jeg takker for hjælpen indtil videre
Avatar billede mr-kill Nybegynder
19. november 2007 - 18:25 #6
Ahh.. Hvis du vil være sikker på den får focus, så bruger du bare det fine API windows stiller til rådighed ;)

Hvis du tager udgangspunkt i det eks. jeg gav før og vil være sikker på Form2 får focus så åben den på denne måde:

Form2 f2 = new Form2();
IntPtr _handle = f2.Handle;
f2.Show();
SetForegroundWindow(_handle);
ShowWindow(_handle, WindowShowStyle.Restore);

WindowShowStyle.Restore -> Kan self. skiftes ud med en af de andre "WindowShowStyle" som er i det enum, der var med før.

"SetForegroundWindow" og "ShowWindow" går jeg ud fra du bruger i Form2, men ellers kan du finde dem i http://www.eksperten.dk/spm/805841 ;)
Avatar billede mcnovy Nybegynder
19. november 2007 - 19:48 #7
mr-kill

super, det var lige hvad der skulle til. (man kan så undrer sig over at ideen ikke faldt mig ind, idet at jeg jo har koden i forevejen, men tænkte bare ikke lige over det.)

men jeg takker for hjælpen.. :)

til jer andre, hvis i er interesseret i nogle point, så sig lige til, så laver jeg en point til tråd.

mr-kill.. smid et svar..!
Avatar billede mr-kill Nybegynder
19. november 2007 - 22:23 #8
Glad for at kunne hjælpe og ja.. Du havde jo hvad du skulle bruge til at løse det selv. Men nogen gange kan man jo ikke se skoven for træer :P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester