| Autor |
Beitrag |
Ccenter
      
Beiträge: 154
Win7
C#
|
Verfasst: So 14.03.10 13:48
Ich habe so ca. vor einem halben Jahr eine Befehl/Einstellung gefunden (ich weiß es leider nicht mehr genau weil ich es für unwichtig hielt und dann nicht weiter verwendet habe) um die Bar einer Windowsform "verschwinden" zu lassen. Mit Bar meine ich jetzt den oberen Rand eines Fensters der den Minimir, Maximir und Schließenbutton enthält und links das Icon der Anwendung.
Gemeint ist jetzt aber nicht die Einstellung ControlBox = false. Ich möchte nämlich nicht die ControlBox weghaben sondern den gesammten oberen Rand. Und daraufhin mir nen eigenen "Header" entwerfen und selbst eine Controlbox schreiben und damit die Windowsbar meines eigenen Programms selbst gestallten.
Weiß jemand wie ich den oberen Rand nun wegschneiden kann?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 14.03.10 13:54
Das Ding heißt "Titelleiste"
Hm, da fiele mir jetzt erst einmal nur ein, den FormBorderStyle des Fensters entsprechend zu setzen
//edit: Allerdings hast Du dann auch den Rand ums Fenster rum nicht mehr.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ccenter 
      
Beiträge: 154
Win7
C#
|
Verfasst: So 14.03.10 14:49
Ok danke
Ich werde jetzt mal nen Screenshot von einem Fenster machen welches noch den Rand hat, den dann ausschneiden und als background von der Form setzen. Dann hab ich mein Rand wieder. Der wird dann zwar nicht mehr durchsichtig sein aber das ist nicht schlimm. Werde den dann eh umfärben.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 14.03.10 14:55
Dann kann der Benutzer aber immer noch nicht die Fenstergröße so ändern, wie wenn ein Rand da ist.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Chiyoko
      
Beiträge: 298
Erhaltene Danke: 8
Win 98, Win Xp, Win 10
C# / C (VS 2019)
|
Verfasst: So 14.03.10 15:35
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 14.03.10 15:43
Schön, eine C#-Seite. Willst Du uns damit irgendwas sagen oder ist das nur Linkwerbung (die nach den Richtlinien verboten ist)?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ccenter 
      
Beiträge: 154
Win7
C#
|
Verfasst: So 14.03.10 16:00
Die Fenstergröße soll auch von anfang an so bleiben. Schließen, minimieren und maximieren habe ich mit Photoshop gezeichnet und in Visual C# mit nem durchsichtigem Panel überdeckt welches beim Clickevent das Programm schließt bzw minimiert oder maximiert.
Was mir allerdings gerade ziemliche schwierigkeiten bereitet ist, dass man das Fenster jetzt nicht mehr wegbewegen kann. Normalerweise würde ich jetzt oben die Titelleiste gedrückt halten und dahin ziehen wo ich will. Das geht jetzt leider nicht mehr. Meine idee wäre nun, ein durchsichtiges Panel oben hinzuplazieren welches sich bei dem clickevent ziehen lässt.
ich weiß allerdings nicht wie dieser Code auch nur ansatzweise aussehen sollte...
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 14.03.10 16:05
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ccenter 
      
Beiträge: 154
Win7
C#
|
Verfasst: So 14.03.10 16:26
Ok danke.
Ich habe den Code so ersteinmal übernommen. Allerdings ist jetzt nichts anders als vorher. Demnach kann ich mir den Code auch nicht von alleine erklären.
So wie ich den Code verstehe, sollte sobald man den linken Mousezeiger drückt, sich die Form ja bewegen lassen. Aber es passiert nichts wenn ich drücke^^
Zuletzt bearbeitet von Ccenter am So 14.03.10 16:29, insgesamt 1-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 14.03.10 16:27
Form1_MouseDown sagt einem doch eigentlich sofort, was wann passieren soll, oder? 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Chiyoko
      
Beiträge: 298
Erhaltene Danke: 8
Win 98, Win Xp, Win 10
C# / C (VS 2019)
|
Verfasst: So 14.03.10 17:08
Christian S. hat folgendes geschrieben : | | Schön, eine C#-Seite. Willst Du uns damit irgendwas sagen oder ist das nur Linkwerbung (die nach den Richtlinien verboten ist)? |
...ich sag mal nix.
->Form ohne Titelleiste bewegen
"Eine Form ohne Titelleiste läßt sich eigentlich nicht verschieben. Durch das ändern der FormBorderStyle auf FormBorderStyle.None wird der Rahmen unsichtbar. Mit etwas Code bringen wir nun doch wieder Bewegung in das Fenster."
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| private Point mouseposition; void MainFormMouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { mouseposition = new Point(-e.X, -e.Y); } void MainFormMouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Point mousePos = Control.MousePosition; mousePos.Offset(mouseposition.X, mouseposition.Y); Location = mousePos; } } |
->Form Titelleiste ausblenden, der code ist selbsterklaerend denk ich mal
www.java2s.com/Code/...BorderLessWindow.htm
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 14.03.10 17:13
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Chiyoko
      
Beiträge: 298
Erhaltene Danke: 8
Win 98, Win Xp, Win 10
C# / C (VS 2019)
|
Verfasst: So 14.03.10 17:16
Ja, aber bissl eigeninitiative ist nicht verkehrt, darum der ganze Link.
Dort sind ja noch weitere nuetzliche Sachen aufgelistet.
Aber sofern ich so helfen konnte, solls mir auch recht sein^^
EDIT und btw: Bei dem Code muss auch der Eventhandler zugewiesen werden,
wie oben schon erwaehnt.
|
|
Nemag
      
Beiträge: 132
Erhaltene Danke: 2
|
Verfasst: Mo 15.03.10 10:29
Servus,
das auswerten des MouseMoveEvents funktioniert zwar auch, aber du wirst feststellen das dein Rechner dabei anfängt doch ganz schön zu rechnen und das der Mauszeiger beim schnellen verschieben der Form beginnt zu wandern.
Hab das auch mal programmiert und war mit den Ergebnissen über das MouseEvent nicht ganz so begeistert. Besser ist es wenn du die WndProc der Form überschreibst und dort die Verschiebung handelst (bzw. das Bewegen einfach an Windows weiterreichst). Hab meinen Code von damals noch nicht gefunden - muss nochmal zu Hause schauen und poste ihn dann.
Aber denke wenn du ein bissel googelst findest du dort auch ne bessere Variante.
|
|
Nemag
      
Beiträge: 132
Erhaltene Danke: 2
|
Verfasst: Mo 15.03.10 10:37
Nach Google-Suche bin ich auf das gestoßen, denke das sieht so aus wie meins damals:
(Weiß allerdings derzeit nicht mehr was ich noch so gemacht hab - das er nur die meine eigene Titelleiste als Client genutzt hat.)
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| protected override void WndProc(ref Message m) { base.WndProc(ref m); int WM_NCHITTEST = 0x84; if (m.Msg != WM_NCHITTEST) return; int HTCLIENT = 1; int HTCAPTION = 2; if (m.Result.ToInt32() == HTCLIENT) m.Result = (IntPtr)HTCAPTION; } |
|
|