Autor Beitrag
Ccenter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 :gruebel:

//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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: So 14.03.10 15:35 
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 14.03.10 16:05 

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ccenter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 14.03.10 16:27 
Form1_MouseDown sagt einem doch eigentlich sofort, was wann passieren soll, oder? :zwinker:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Chiyoko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: So 14.03.10 17:08 
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
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."

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 14.03.10 17:13 
user profile iconCcenter hat folgendes geschrieben Zum zitierten Posting springen:
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^^

Hast Du denn den Eventhandler auch zugewiesen oder einfach nur den Quelltext reinkopiert?

user profile iconChiyoko hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
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.

So lange Du demnächst "richtige" Antworten wie Deine jetzige schreibst und nicht nur lustlos einen Link hinklatschst, soll's mir recht sein ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Chiyoko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 132
Erhaltene Danke: 2



BeitragVerfasst: 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.)

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
protected override void  WndProc(ref Message m)
        {
            // Let the base class have first crack
            base.WndProc(ref m);
            int WM_NCHITTEST = 0x84// winuser.h
            // If the user clicked on the client area,
            // ask the OS to treat it as a click on the caption
            if (m.Msg != WM_NCHITTEST) return;
            int HTCLIENT = 1;
            int HTCAPTION = 2;
            if (m.Result.ToInt32() == HTCLIENT)
                m.Result = (IntPtr)HTCAPTION;
        }