C# - Fenster Positionierung

Verwendung von Windows Forms-ich wollte die position des Fensters in bestimmten coords. Ich dachte, es getan werden kann in einer einfachen Weise, aber der folgende code funktioniert gar nicht:

public Form1()
{
    InitializeComponent();

    this.Top = 0;
    this.Left = 0;
}

Jedoch, wenn nur ein handle für das Fenster, es funktioniert gut:

public Form1()
{
    InitializeComponent();

    IntPtr hwnd = this.Handle;
    this.Top = 0;
    this.Left = 0;
}

Können Sie sehen, dass ich nicht arbeiten mit, die Zeiger auf alle. Ich fand Sie auf MSDN folgende Anweisung:

Den Wert der Handle-Eigenschaft ist ein Fenster HWND. Wenn der Griff hat
noch nicht erstellt wurden, verweisen auf diese Eigenschaft zu zwingen, den Griff
erstellt werden.

Bedeutet es, dass wir Fenster-position erst NACH der Erstellung der Griff? Sind setter "Oben/Links" mit diesem Griff intern? Danke für die Klarstellung.

Nicht beantworten Ihre Frage, aber Sie können überschreiben die OnHandleCreated Methode zu vermeiden, wird der Anruf zu this.Handle. Ich Stimme zu, es ist seltsam, dass this.Handle offenbar prüft und erstellt die zugrunde liegenden Griff, während andere Eigenschaften, die abhängig von der zugrunde liegenden Griff nicht.
haben Sie versucht, setzen Sie Sie in den designer?
Ich weiß, ich kann Problemumgehung es viele Möglichkeiten. Ich wollte nur wissen, warum es auf diese Weise verhält, weil in anderen frameworks (Qt, wxWidgets, MFC,...) können Sie Ihre Fenster-position, direkt in die Fenster der Gebäude.

InformationsquelleAutor Fremen | 2012-04-26

Schreibe einen Kommentar