Feedback

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

Veröffentlicht von am 7/27/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
}



7 Kommentare zum Snippet

Patrick Semmler schrieb am 7/28/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 7/29/2017:
Naja, wer das nicht weiß hat jetzt zumindest mal 3 Möglichkeiten! ;)
timonator schrieb am 8/30/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 8/30/2017:
@timonator
Inwiefern ist select-case besser? So oder so: "if" ist nicht "fehl am Platze"...
timonator schrieb am 8/31/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 8/31/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.
Snipezzzx schrieb am 1/16/2019:
Ich hatte mal die beiden Möglichkeiten getestet. switch-case war tatsächlich minimal schneller.

@timonator was L# macht hat nichts mit Profilieren zu tun. Ich denke er hatte einfach das Problem und er wollte anderen helfen, so wie wahrscheinlich jeder, der hier ein Snippet veröffentlicht.
 

Logge dich ein, um hier zu kommentieren!