Laden...

FormBorderStyle eines Forms

Letzter Beitrag vor 14 Jahren 32 Posts 9.727 Views
FormBorderStyle eines Forms

Hallo,

wie muss ich die Eigenschaften eines Forms setzen, um ein Form zu erhalten wie z.B. beim (Vista) Lautstärkeregler (erscheint bei Klick auf Lautsprecher-Icon im Tray)?
Das Form hat weder ControlBox noch Icon / Titel und damit auch keine Formleiste, ist nicht größenveränderbar, hat aber trotzdem nicht den FormBorderStyle wie FixedSingle. Ich habe es schon mit FixedDialog probiert, was aber ohne Formleiste auch nicht so aussieht wie gewünscht.

Edit: Im Anhang nochmal das gewünschte Ergebnis ... So soll es aussehen, nur eben nicht größenveränderbar sein.
m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Schon mal mit ControlBox ausschalten versucht? Und zusätzlich keinen Formtext, dann kommst fast an das gewünschte rann. Zum Schluss kannstes noch Locken, dann is es auch nicht mehr Größenveränderbar.

lg Anja

Carpe Diem! =)

Hallo anja,

das ist ja mein bisheriges Resultat - nur möchte ich wissen, wie ich noch einstelle, dass sich die Größe nicht ändern lässt 😉.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Hab Antwort erweitert. 😃

lg

Carpe Diem! =)

Hallo anja,

Zum Schluss kannstes noch Locken, dann is es auch nicht mehr Größenveränderbar.

Das habe ich auch schon versucht. Ich habe im Designer Locked auf true gesetzt, das ganze Form ist aber größenveränderbar wie eh und je.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Komisch, habs eben bei meinem Form ausprobiet und es war nich veränderbar.
... Seltsam ... ?(

Carpe Diem! =)

Hallo m0rius

vielleicht bringt es auch etwas, wenn du die OnResize-Methode des Forms überschreibst und die Größenänderung dort abfängst? Zwar sicher nicht die sauberste Lösung (bei mir funktioniert Anja's Lösung auch), aber zumindest als Workaround...

Gruß Michbeck1983

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

Hallo Michbeck1983,

das wäre sicher eine Lösung, ich fände es aber trotzdem irritierend, wenn der Cursor zum Pfeil wird und das Ziehen nichts bringt.
m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Hallo m0rius,

... ich fände es aber trotzdem irritierend, wenn der Cursor zum Pfeil wird und das Ziehen nichts bringt.
m0rius

Stimmt natürlich. Dann müsste man noch das Ändern des Mauscursors abfangen etc... Das habe ich nicht bedacht 8o

Gruß Michbeck1983

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

Hallo Anja,

kannst du mir mal dein Beispielprojekt schicken?
Ich würde mir gerne mal die Einstellungen ansehen. Es scheint ja genau das zu sein, was ich suche.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Hallo zusammen,

Komisch, habs eben bei meinem Form ausprobiet und es war nich veränderbar.

Nur im Designer oder auch zur Laufzeit?
Die Locked Property beeinflusst nämlich IMHO nur den Designer.

Als besseren Workaround kannst du festlegen, dass Size = MinimumSize = MaximumSize.
Dann erscheinen aber immer noch die "Resizepfeile".

Ansonsten wirst du vermutlich gewisse Windows-Messages abfangen müssen.
Welche das sind, versuche ich gerade herauszufinden. 🙂

Hallo winSharp93,

Die Locked Property beeinflusst nämlich IMHO nur den Designer.

Genau das tut er in meinem Fall.

Als besseren Workaround kannst du festlegen, dass Size = MinimumSize = MaximumSize.

Oops ... Das hatte ich in einem anderen Beitrag gepostet, aber editiert, weil ich dachte, das tut hier nichts zur Sache. War mein Workaround bisher ...

Dann erscheinen aber immer noch die "Resizepfeile".

... mit genau diesen Problemen.

Aber soweit ich das verstanden habe, läuft es ja bei Anja, oder?
Dass es funktioniert, sieht man ja am Audio-Form; u.U. sind da aber auch die Resize-Pfeile händisch entfernt ...

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

War nur ein kleines Probeprogramm gewesen, habs einfach mal so abgeändert wie dus brauchtest. 😃

Carpe Diem! =)

Ich hab das auch Ausgeführt und es hat sich nich verändern lassen. 😃

lg Anja

Carpe Diem! =)

Ansonsten wirst du vermutlich gewisse Windows-Messages abfangen müssen.
Welche das sind, versuche ich gerade herauszufinden. 😃

So klappt es bei mir:


/// <summary>
/// The WM_SETCURSOR message is sent to a window if the mouse causes the cursor to move within a window and mouse input is not captured.
/// </summary>
private const int WM_SETCURSOR = 0x0020;

protected override void WndProc(ref Message m)
{
	if (m.Msg == WM_SETCURSOR &&		!this.RectangleToScreen(this.ClientRectangle).Contains(Control.MousePosition))
	{
		SetCursor(Cursors.Default.Handle);
		return;
	}

	base.WndProc(ref m);
}

[DllImport("user32.dll")]
static extern IntPtr SetCursor(IntPtr hCursor);

Hallo Anja,

die Größe hat sich bei mir auch nicht verändern lassen, allerdings sehe ich den Rahmen überhaupt nicht.

So sieht das Ganze bei mir aus (s. Anhang):

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Also das der Rahmen verschwindet ist normal wenn man ControlBox und Formtext ausschaltet.

lg

Carpe Diem! =)

Hallo Anja,

besitzt du Vista? Wenn ja, klick doch mal auf das Lautsprecher-Icon im Tray.
Daraufhin erscheint das Form aus dem Anhang - und dessen Größe lässt sich nicht verändern.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Hab Vista Daheim, aber auf Arbeit hab ich nur XP. 😃 Kanns ja mal im Vista testen und mich nochmal melden. 😃

lg

Carpe Diem! =)

Hallo winSharp93,

danke, sollte es keine andere Lösung geben, werde ich dein Workaround verwenden.

Hallo Anja,

alles klar ...

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Sorry, aber hab auch im Vista keine neuen Einstellungen gefunden. Man müsste in den Windows - Quellcode schauen können. 😉

lg Anja

Carpe Diem! =)

Hallo Anja,

macht nichts, trotzdem danke 😃.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Hallo m0rius,

selbst zeichnen.
Wenn du versuchst, die abgerundeten Ecken zu zeichnen, dann bemüh google mit Rounded Rectangle. Auf codeproject gibt es dazu auch etwas entsprechendes.
Den Rahmen zeichnest du gerendert (Graphics.SmoothinMode = AntiAlias) damit das ordentlich aussieht.
Erfordert zwar etwas Geduld, aber machbar ist das.

selbst zeichnen.

Ob das eine so gute Lösung darstellt, wage ich zu bezweifeln 🤔
Spätestens mit der Milchglastransparenz von Aero kriegt man da massive Probleme...

Mein Workaround ist ja auch gar nicht so workaroundig - eine elegantere Möglichkeit sehe ich keine.

Zumal anscheinend auch die Windowsdialoge das so machen:
Mithilfe von Spy++ habe ich (dank eines Bugs, der verhinderte, dass der Dialog gleich wieder verschwand) den WindowStyle des Lautstärkedialogs ausgelesen: 9404004C; der ExtendedStyle lautet: 0x08010108.

Schreibe ich nun in einer Form:

protected override CreateParams CreateParams
{
	get
	{
		CreateParams param = base.CreateParams;
		//Entspricht in etwa
		//param.Style = unchecked((int) (WindowStyles.WS_POPUP | WindowStyles.WS_VISIBLE | WindowStyles.WS_THICKFRAME | WindowStyles.WS_CLIPSIBLINGS));
		//param.ExStyle = unchecked((int) (WindowStyles.WS_EX_LEFT | WindowStyles.WS_EX_LTRREADING | WindowStyles.WS_EX_TOPMOST | WindowStyles.WS_EX_RIGHTSCROLLBAR | WindowStyles.WS_EX_WINDOWEDGE));
		param.Style = unchecked((int)0x9404004C);
		param.ExStyle = unchecked((int) 0x08010108);
		return param;
	}
}

lässt diese sich immer noch in ihrer Größe ändern.

Drück einfach auf das Form, anschließend stellst du im Eigenschaftsfenster bei Darstellung --> FormBoarderStyle --> FixedSingle ein dann kannst du den Rahmen nicht mehr verändern.
Es kommen auch keine unschönen Cursors und zeichnen musst du auch nichts
genauso wie beim Lautstärkeregler 8)

probiers einfach mal, klappt prima auch mit Aero 😁

Sizzla

probiers einfach mal, klappt prima auch mit Aero

Bei mir nicht:

Wenn du es so gemacht hast wie ich es erklärt habe, geht es!
Mach mal ein neues Projekt und versuche es bei normalen Standard Form.
Falls es dann noch immer nicht geht liegt es vl an írgendwelchen Eigenschaften.
Ich kann aber gerne mal ein leeres Projekt hochladen um zu sehen ob es dann bei dir geht oder nicht.

Sizzla

EDIT: wieso sehen bei dir die ränder so komisch aus?

Hallo Sizzla,

EDIT: wieso sehen bei dir die ränder so komisch aus?

Das tun sie bei mir auch ... Das war ja der Grund, weswegen ich diesen Thread eröffnet habe ...

Edit: s. Ausgangspost, da ist mein Versuch schon beschrieben ...

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Ich kann aber gerne mal ein leeres Projekt hochladen um zu sehen ob es dann bei dir geht oder nicht.

Ja, das wäre nett.

PS: Bilder bitte nicht in IMG-Tags einbetten sondern als Anhang hinzufügen.

So bei mir funktioniert es ich hoffe auch bei euch.

Im Anhang ist das leere TestProjekt welches mit VS2008 erstellt wurde zu downloaden.

Sizzla

Hallo Sizzla,

ich verweise nochmal auf meinen Ausgangspost ... Dieses Formular kriege ich auch hin, allerdings nicht - wie z.B. beim Lautstärkepegel unter Vista - ohne Formleiste und gleichzeitig unresizable ...

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

Hallo zusammen,

in der Zwischenzeit gibt es eine Lösung von aadler, s. Vorlage für eine Windows Vista/7 Tray Application.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg