2016-11-24 7 views
0

Ich bekomme ungeeignetes Verhalten in der Größe des Formulars, ich setze die Werte der Breite und der Höhe manuell, aber die produzierte Form ist kleiner als erwartet.Winform Breite und Höhe falsche Werte

Ich machte ein einfaches Formular, um mein Problem zu veranschaulichen, das Formular wird auf 400x400 in der IDE festgelegt.

Auf dem Formular gibt es drei Etiketten mit Text zu ändern, indem die Maus ihren Code bewegen wie folgt:

private void Form1_MouseMove(object sender, MouseEventArgs e) 
    { 
     label1.Text = "this.Width = " + this.Width.ToString(); 
     label2.Text = "this.Height = " + this.Height.ToString(); 
     label3.Text = "Mouse X coordinate = " + e.X.ToString() + "\nMouse Y coordinate = " + e.Y.ToString(); 
    } 

Und hier ist das, was ich bekommen:

Die Breite

The width

Die Höhe

The height

Irgendwelche Ideen?

+4

'this.ClientSize.Width' ist anders als' this.Size.Width' –

+0

Willkommen bei Stack Overflow. Überprüfen Sie bitte zuerst die Fragen zum Stack Overflow (http://stackoverflow.com/help/asking). Konzentriere dich auf [Welche Themen kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic), [Welche Arten von Fragen sollte ich vermeiden zu fragen?] (Http://stackoverflow.com/help/dont -ask), [Wie stelle ich eine gute Frage?] (http://stackoverflow.com/help/how-to-ask), [Wie erstelle ich ein minimales, vollständiges und überprüfbares Beispiel] (http: // stackoverflow. com/help/mcve) und [Stack Overflow Frage-Checkliste] (http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist). –

+0

Meine Vermutung, dass Sie die gesamte Breite/Höhe des Formulars (einschließlich Titelleiste und Rahmen) festlegen, müssen Sie die Breite/Höhe des Clientbereichs festlegen. – apr

Antwort

0

Die Windows-Formulargröße ist 400x400, aber der aktive Bereich mit Ausnahme von Titelleiste und Rahmen ist anders, der Mauszeiger erhält die Koordinaten gemäß dem aktiven Bereich. Sie können die aktive Bereichsgröße durch this.ClientSize.Width und this.ClientSize.Height erhalten.

Stellen Sie den Client-Bereich auf 400x400 (Ändern Sie die Formulargröße entsprechend), und es zeigt Ihnen das korrekte Ergebnis.