[Risolto] Rendere spostabile un form senza bordi

di il
1 risposte

[Risolto] Rendere spostabile un form senza bordi

Buongiorno a tutti,
ho fatto una semplicissima applicazione in C# con visualstudio 2015 .
Per impedire che venga chiusa ho decisa di eliminare la barra del titolo (ho impostato da proprietà del form FormBorderStyle = none), e con un pò di fatica l'ho posizionata in basso a dx (sopra l'orologio di windows per capirci).
Però mi sono accorto che così può dare fastidio (perchè deve essere sempre in primo piano), quindi vorrei che cliccando in un qualunque posto del form lo si possa spostare.

Ho visto su google che un'altra persona aveva fatta la mia stessa domanda, ma era un forum su visualbasic, mentre x me è già tanto programmare in c# (ho basi di c++ ), ma visual basic proprio non lo conosco e non so se posso scrivere il mio progetto un pò in un modo e un pò in un altro (ma non penso proprio).

PS un altro motivo x cui l'ho chiusa è che il form cambia colore a seconda se il PC è libero (colore verde) o in uso (colore rosso), e la barra sarebbe sempre di un unico colore blu sfumato e non mi piace.

PPS ho visto che potrei riscrivere la classe che comanda il bottone "X" (di chiusura), magari facendo uscire un messaggio del tipo "Don't close, please" (o alert o popup..)

Grazie

1 Risposte

  • Re: [Risolto] Rendere spostabile un form senza bordi

    Per rendere spostabile il form ho usato il seguente codice:
    private bool mouseDown;
    private Point lastLocation;
    
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            mouseDown = true;
            lastLocation = e.Location;
        }
    
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if(mouseDown)
            {
                this.Location = new Point(
                    (this.Location.X - lastLocation.X) + e.X, (this.Location.Y - lastLocation.Y) + e.Y);
    
                this.Update();
            }
        }
    
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            mouseDown = false;
        }
    Da applicare non solo sul form, ma anche su gli elementi sopra al form (come le textBox).

    Come al solito, è bastato fare una ricerca in lingua inglese ed è uscito fuori il risultato.. lo condivido così potrebbe essere utile a qualc1..
Devi accedere o registrarti per scrivere nel forum
1 risposte