Feedback

C# - Formular in den Vordergrund/Nicht mehr "wegklickbar"/TopMost

Veröffentlicht von am 27.07.2017
(0 Bewertungen)
Ein kurzes Snippet um das Formular immer im Vordergrund zu halten. Auch wenn man in den Hintergrund klickt.
Praktisch auch für Vollbildanwendungen...

WANN WELCHE MÖGLICHKEIT?
1: SWITCH Wenn man es wie einen Lichschalter on/off schalten will, man aber immer das gegenteilige haben will: d.h:
WENN TRUE => false
WENN FALSE => true;
2: ON ODER OFF Wenn man nur beim Start es aktivieren oder(nicht beim Start)man es deaktivieren will.

Aufruf von Möglichkeit1:
switchTopMost(SuperDuperForm;

z.B. wenn die Startform noch Form1 heißt und man sie nicht unbenannt hat:
switchTopMost(Form1);



//Möglichkeit1:
private void switchTopMost(Form f)
{

if(f.TopMost == true)
   f.TopMost = false; //wenn schon aktiviert: deaktivieren
else
   f.TopMost = true; //wenn deaktiviert: aktivieren

}




//Möglichkeit 2:Direkt in z.B. Form_Load
[..]
{
this.TopMost = true; //aktivieren
//this.TopMost = false; //deaktivieren
}



6 Kommentare zum Snippet

Patrick Semmler schrieb am 28.07.2017:
Sorry, aber was soll das für ein Snippet sein, das im Prinzip nur eine Standard-Eigenschaft eines Formulars setzt?

Zudem lässt sich ein Boolean-Wert viel einfacher "umschalten":

this.TopMost = !this.TopMost;
L# schrieb am 29.07.2017:
Naja, wer das nicht weiß hat jetzt zumindest mal 3 Möglichkeiten! ;)
timonator schrieb am 30.08.2017:
Da du einen Boolean abfragst, bietes sich 'Select Case' an, 'If' ist da fehl am Platze.

Off Topic Anmerkung:
Die begriffe "Profilieren" und "Programieren", klingen zwar ähnlich,sind aber gänzlich unterschiedlich. ;)
Mit derartig belanglosen Schnippselchen, müllst du hier die Datenbank voll, dafür ist diese Seite nicht gedacht!
Koopakiller schrieb am 30.08.2017:
@timonator
Inwiefern ist select-case besser? So oder so: "if" ist nicht "fehl am Platze"...
timonator schrieb am 31.08.2017:
Na gut "Fehl am Platze" ist etwas übertrieben. :P
Ich habe mir angewöhnt, code immer möglicht logisch zu gestalten
und in diesem Fall ist die Logig folgende;
Es werden genau zwei Zustände (bzw max. Drei) abgefragt und nicht etwa tausende, wie das bei einem langen String der Fall wäre.
Ist es so, so, oder so, feddich.
Da ist eine Abfrage "Ist es jetzt irgentwie", von der Logig her überflüssig.
Hat rein was mit logischer Lesbarkeit zu tun, die Funktionalität ist die gleiche.
Koopakiller schrieb am 31.08.2017:
Schon mal SQL programmiert? Da passt das rein, in C#/VB.NET auch, aber benutzt praktisch keiner.

if(a) meint ja nur, dass a den Typ System.Boolean hat und entsprechend dort ausgewertet werden kann. Ein switch(a){case true: entspricht streng genommen einem if(a==true). Zur Laufzeit macht das keinen Unterschied, aber die Interpretations-Logik ist nicht ganz die Gleiche. Ohne Compiler-Optimierung dürfte das sogar ineffizienter sein.
Im Grunde genauso wie der Inhalt von switchTopMost. Aber IMO ist der Compiler schlau genug für solche Dinge. Von daher: Jeder wie er mag.

Schon alleine der höhere Schreibaufwand treibt mich zum if, aber da spricht der C#ler ;)
Und bei der Leserlichkeit bin ich skeptisch, ist aber vielleicht Gewöhnungssache.
 

Logge dich ein, um hier zu kommentieren!