Uso di Windows Form Volevo posizionare la finestra in specifiche coordinate. Ho pensato che può essere fatto in modo semplice, ma a seguito di codice non funziona affatto:Posizionamento della finestra C#
public Form1()
{
InitializeComponent();
this.Top = 0;
this.Left = 0;
}
Tuttavia, quando solo ottenere un handle a quella finestra, funziona bene:
public Form1()
{
InitializeComponent();
IntPtr hwnd = this.Handle;
this.Top = 0;
this.Left = 0;
}
È posso vedere che non sto lavorando con quel puntatore. Ho trovato in MSDN seguente dichiarazione:
Il valore della proprietà Handle è un HWND di Windows. Se l'handle non è stato ancora creato , il riferimento a questa proprietà impone l'handle da creare.
Significa che possiamo impostare la posizione della finestra solo DOPO la creazione della sua maniglia? I setter Top/Left utilizzano questa maniglia internamente? Grazie per il chiarimento.
Non rispondere alla domanda, ma è possibile sovrascrivere il metodo 'OnHandleCreated' per evitare la chiamata a' this.Handle'. Sono d'accordo che è strano che 'this.Handle' controlli e crei l'handle sottostante, mentre altre proprietà dipendenti dall'handle sottostante non lo fanno. –
hai provato a impostarli nella finestra di progettazione? –
So che posso aggirarlo in molti modi. Volevo solo sapere perché si comporta in questo modo perché in altri framework (Qt, wxWidgets, MFC ...) è possibile impostare la posizione della finestra direttamente durante la creazione della finestra. – Fremen