Domanda

Vorrei solo sapere se è possibile ancorare un modulo Windows nella parte superiore dello schermo dell'utente?Ho provato a farlo impostando manualmente la posizione del mio modulo sulle coordinate che desidero.Ma utilizzando questo metodo, però, l'utente può modificare la posizione del modulo semplicemente trascinandolo.Voglio che il modulo sia ancorato alla parte superiore dello schermo poiché questo modulo finestra verrà utilizzato come menu per il progetto che sto realizzando.

Molte grazie.:)

È stato utile?

Soluzione 2

Quindi dopo alcuni tweaks ho finalmente in grado di ottenere questo codice funzionante.

this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width / 2 - 420), 0);
.

Ho inserito quella linea sotto l'inizializzazioneComponente () e si blocca il mio modulo al centro dello schermo con qualsiasi valori di risoluzione.

Altri suggerimenti

Prenderei in considerazione l'utilizzo di Control.Dock proprietà insieme a uno dei DockStyle valori di enumerazione.

Potrebbe essere necessario giocare con Layout anche, in modo da poter disporre i controlli del modulo in modo diverso a seconda del DockStyle selezionato.

Dovrai, dal mio punto di vista, considerare il Control.Location proprietà in modo che tu possa sapere quale DockStyle valore a cui agganciare il modulo.

MODIFICA N. 1

Il tuo Windows Form ha un file Dock proprietà in quanto eredita Control.

Consideriamo quanto segue:

  1. Ogni volta che il tuo modulo si avvicina al lato destro dello schermo, ad esempio, o al contenitore MDI, vuoi agganciarlo a destra, giusto?(Un piccolo gioco di parole qui...=P) Quindi, devi iscriverti a Control.LocationChanged evento.

    private void myForm_LocationChanged(object sender, EventArgs e) {
        if (this.Location.X > 900) then
            this.Dock = DockStyle.Right;
        else if (this.Location.X < 150) then
            this.Dock = DockStyle.Left;
        else if (this.Location.Y > 600) then
            this.Dock = DockStyle.Bottom;
        else if (this.Location.Y < 150) then
            this.Dock = DockStyle.Top;
        else
            this.Dock = DockStyle.None;
    }
    

In effetti, invece di valori costanti, dovresti utilizzare la risoluzione corrente del desktop e calcolare un rapporto da essa nel punto in cui desideri che si verifichi l'aggancio.

***Disclaimer:****Questo codice viene fornito così com'è e non è stato testato.Si spera che questo algoritmo sia sufficiente a guidarti attraverso il processo di docking quando ne hai bisogno.Ulteriore assistenza può essere fornita su richiesta.* =)

Sembra che Form.DesktopLocation property è lo strumento più adatto per il lavoro come per la tua finestra principale, ovvero il tuo contenitore MDI, ad esempio.Per quanto riguarda le altre finestre, opterei per qualcosa che assomigli al codice di esempio fornito.

questo aiuta?

MODIFICA N.2

Se vuoi evitare la sovrapposizione di Form, forse il file Control.BringToFront() potrebbe farlo prima o dopo la chiamata al Control.Show() metodo, a seconda di ciò che funziona meglio per te.

Impostando il FormBorderStyle del modulo su None, si prende la maniglia di trascinamento lontano dall'utente in modo che non possano spostarlo tramite il mouse.

Allora devi solo posizionarlo dove vuoi.

Se vuoi davvero portare via le opzioni degli utenti è anche possibile impostare la proprietà ShowInTaskbar su false

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top