Laden...

GotFokus einer Form unterbinden

Erstellt von inek vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.430 Views
inek Themenstarter:in
182 Beiträge seit 2007
vor 14 Jahren
GotFokus einer Form unterbinden

Hallo zusammen.. ich habe folgendes Problem und finde leider absolut keine lösung über suche und Google..

ich habe eine form, die ich ähnlich wie ein tooltip ab und an anzeigen lasse.. problem ist, diese form darf mir nicht den focus klauen.

gibt es evtl ne möglichkeit der form direkt zu sagen das die gar keinen focus bekommen kann ( darf )?

L
7 Beiträge seit 2009
vor 14 Jahren

Moin!

Das Problem habe ich auch...

Die Form darf "Focus" nicht klauen doch trotzdem vor allen anderen Fenstern zu sehen sein. Doch da die Form "on the Top" sein muss wird die automatisch Aufmerksamkeit auf sich ziehen 🙁

Das ist eine Sackgasse. Kennt wer `ne Lösung ?(

6.911 Beiträge seit 2009
vor 14 Jahren

Hallo,

mit


protected override bool ShowWithoutActivation
{
	get
	{
		return true;
	}
}

geht das.

(Diesen Code der Form hinzufügen die nicht aktiviert werden soll).

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

L
7 Beiträge seit 2009
vor 14 Jahren

Ja THX!

Hat`s geklappt 😃

P.S: Diese Methode funktioniert aber erst wenn man .NET 2.0 installiert hat. Nur so btw.

inek Themenstarter:in
182 Beiträge seit 2007
vor 14 Jahren

sry.. bei mir bringt das irgendie nix.. hab trotzdem das problem, das meine form den focus klaut..

L
7 Beiträge seit 2009
vor 14 Jahren

Du muss es direkt in deine Form-Klasse einfügen. Es muss nicht aufgerufen werden den es wird automatisch nach jedem Formaufruf überschrieben.

L
7 Beiträge seit 2009
vor 14 Jahren

So jetzt habe ich festgestellt, dass das mit dem Focus nur teilweise bei mir funktioniert.
Beim 1 Durchlauf ist alles i.O. Ich behalte mein Fokus wie ich es wollte.
Doch beim nächsten erscheinen der Form wird Focus wieder auf die Form umgelenkt.

Meine Vermutung ist dass die Form nicht richtig beendet wird.


public void Form_Closing(object sender, System.ComponentModel.CancelEventArgs cArgs)
        {            
              this.Close();       //stackoverflowexception        
        }

Bei dem Versuch kommt aber immer eine "stackoverflowexception" raus.

6.911 Beiträge seit 2009
vor 14 Jahren

Das ist klar denn du erstelltst eine klassische Rekursion im FormClosing-Ereignis indem es indirekt selber aufgerufen wird - über this.Close().

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

L
7 Beiträge seit 2009
vor 14 Jahren

Das ist klar denn du erstelltst eine klassische Rekursion im FormClosing-Ereignis indem es indirekt selber aufgerufen wird - über this.Close().

mfG Gü

asö...

doch wie kann ich dann eine Form sauber beenden? Und damit meine ich wirklich aus dem Speicher zu löschen und nicht nur unsichtbar zu machen 😃

P.S: mit Application.Exit(); kille ich meine ganze Anwendung ....

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo L33,

schon mit Close. Du darfst es halt nur nicht im Closing aufrufen.

herbivore

L
7 Beiträge seit 2009
vor 14 Jahren

Ok.

Back to Topic:

Wenn die Form aufgerufen wird dann erstellt es immer wieder eine neue Instanz.
Ich habe den form.Show(); Aufruf mit Haltepunkten untersucht und jedesmal kommt, dass ShowWithoutActivation = true ist.
Das ist zwar richtig doch es funktioniert nicht immer bzw. nur bei dem allerersten Aufruf.

Hat wer vielleicht eine Idee wo dieser "Focus"-Fehler liegen könnte?

TopMost ist übrigens auch auf true. Das ist aber eigentlich irrelevant.

M
4 Beiträge seit 2007
vor 14 Jahren

Dein Fenster sollte Topmost sein und keinen Focus bekommen.
Vielleicht hilft dir das weiter: http://www.pinvoke.net/default.aspx/user32/ShowWindow.html
Abschnitt: "Topmost Window Without Focus"

L
7 Beiträge seit 2009
vor 14 Jahren

Moin!

Danke für den Tipp. Leider ist da genau der selbe Fehler...

Beim 1ten Mal alles i.O. Beim 2ten Mal wieder Focus auf sich selbst.

Ich habe auch gemerkt, dass wenn ich die Form nur verschiebe und nicht schließe die nächste Form den Focus nicht kriegt.

Es liegt also doch irgendwas an dem Form- "Schließmechanismus" 😃