View Full Version : [C#]Form senza bordi
Mattyfog
24-12-2009, 17:23
Ho visto che si possono facilmente eliminare i bordi di una form in fase progettazione semplicemente dando il valore "None" alla proprietà FormBorderStyle della Form. Così, proprio come voglio io, spariscono però anche i pulsanti chiudi, ridimensiona e riduci a icona (che ricreerò e risolvo da solo). Più che altro assieme a questi pulsanti (chiudi, ridimensiona, ecc), ossia quelli predefiniti di una finestra, scompare la barra del titolo che permette normalmente di spostare la form sullo schermo semplicemente cliccandoci e spostando il mouse senza lasciare il tasto sinsitro. Quindi come faccio a riottenere un'effetto simile per spostare la form?
Energy++
25-12-2009, 15:50
devi aggiungere al form i gestori per questi eventi:
- MouseDown
- MouseUP
- MouseMove
dopo di che implementare una cosa del genere:
bool drag;
Point startPoint;
void Form_MouseDown(object sender, MouseEventArgs e)
{
this.drag = true;
this.startPoint = new Point(e.X, e.Y);
}
void Form_MouseUp(object sender, MouseEventArgs e)
{
this.drag = false;
}
void Form_MouseMove(object sender, MouseEventArgs e)
{
if (this.drag)
{
Point p1 = new Point(e.X, e.Y);
Point p2 = this.PointToScreen(p1);
Point p3 = new Point(p2.X - this.startPoint.X, p2.Y - this.start_point.Y);
this.Location = p3;
}
}
spero di essere stato utile
Mattyfog
26-12-2009, 19:55
devo ancora provare ma sei stato davvvero esauriente :)
se io però volessi creare un'applicazione più complicata graficamente, di quelle con "forme" personalizzate e che quindi non sono più quel classico rettangolo delle normali windows form, cosa dovrei fare?
se io però volessi creare un'applicazione più complicata graficamente, di quelle con "forme" personalizzate e che quindi non sono più quel classico rettangolo delle normali windows form, cosa dovrei fare?
E' semplice. Essenzialmente ti serve definire un GraphicsPath, ossia un "percorso grafico" che definisce il contorno della figura. Figura che poi va assegnata alla Region della Form, o di qualsiasi altro Control di cui si vuole modificare l'aspetto :
private void Form1_Load(object sender, EventArgs e)
{
System.Drawing.Drawing2D.GraphicsPath GP = new System.Drawing.Drawing2D.GraphicsPath();
GP.StartFigure();
GP.AddEllipse(0, 0, this.Width, this.Height);
GP.CloseFigure();
Region R = new Region(GP);
this.Region = R;
}
In questo caso ho una Form ellittica. ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.