Come ancorare un modulo Windows in C#?
-
13-09-2020 - |
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.:)
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:
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