Moin!
Kann man, in C#, im Code, die Breite einer vorhandenen Form abfragen?
So nach dem Motto:
int aktuelleBreite = Form1.Width; , oder ähnlich ?
Beispiele, die im Netz zu finden sind, zeigen, wie man Controls zur Laufzeit erstellt und ihnen eine Breite mitgibt.
mfg hans
Form.Size Property (System.Windows.Forms)
Dadurch erhältst du eine Instanz des Size structs und dieses enthält dann Width und Height der Form.
PS: Googlen ist in solchen Fällen meistens schneller als einen Beitrag im Forum zu eröffnen. Mit der Google Suchanfrage "form width docs microsoft c#" ist die von mir verlinkte Seite, zumindest bei mir, das erste Ergebnis.
[...]
PS: Googlen ist in solchen Fällen meistens schneller als einen Beitrag im Forum zu eröffnen. Mit der Google Suchanfrage "form width docs microsoft c#" ist die von mir verlinkte Seite, zumindest bei mir, das erste Ergebnis.
Moin!
Die Seite hatte ich auch deutsch übersetzt gegoogelt,
welcher ich entnehmen kann, wie man eine neue form erstellt
und sie ausgestaltet.
Ich suche einfach nur nach einer korrekten Formulierung für das Auslesen des Width-Wertes.
mfg hans
Genauso wie du die Size beim Erstellen der Form übergibst, kannst du natürlich auch mit
Size myFormSize = form.Size;
die Size wieder auslesen.
Anschließend kannst du wieder über Zugriff auf myFormSize die Width auslesen:
int currentWidth = myFormSize.Width;
Du kannst aber auch ohne das Size struct zwischenzuspeichern den Wert auslesen:
int currentWidth = form.Size.Width;
Hallo,
der Code
int aktuelleBreite = Form1.Width;
ist so korrekt (sofern Form1
ein initialisiertes Form
-Objekt darstellt).
Size
wird nur benötigt, wenn man Breite und Höhe gleichzeitig abfragen möchte.
Es gibt auch noch ClientSize
, welche die Größe für den inneren Bereich (d.h. für die untergeordneten Controls) einer Form zurückgibt.
Hallo,
der Code
int aktuelleBreite = Form1.Width;
ist so korrekt (sofern
Form1
ein initialisiertesForm
-Objekt darstellt).
Moin!
»Form1« ist eine Form, mit der ich bereits arbeite ...
namespace MakeNewLabel_22_07_21
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// label.Top = (ClientRectangle.Height - label.Height) / 2;
// 1.) int currentWidth = Form1.Width;
// 2.)size myFormSize = form.Size;
// 3.) int aktuelleBreite = Form1.Width;
}
private void button1_Click(object sender, EventArgs e)
{
Application.Exit(); // Programm beenden
}
}
}
Leider führte keiner der hier dankenwerterweise gemachten Hinweise zum Erfolg.
mfg hans
Innerhalb Form1 reicht entsprechendes:
int aktuelleBreite = Width;
»Form1« ist eine Form, mit der ich bereits arbeite
Aber es wurde kein Objekt "Form1" initialisiert.
z.B.
Form1 myForm = new Form1();
int aktuelleBreite = myForm.Width;
[...]
Aber es wurde kein Objekt "Form1" initialisiert.z.B.
Form1 myForm = new Form1(); int aktuelleBreite = myForm.Width;
namespace NewWidth_22_07_21
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Form1 myForm = new Form1();
int aktuelleBreite = myForm.Width;
}
private void button1_Click(object sender, EventArgs e)
{
Application.Exit(); // Programm beenden
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Form1_Load_1(object sender, EventArgs e)
{
}
}
}
Wird mit folgender Meldung abgelehnt: System.StackOverflowException
mfg hans
Weil Du die Form1 im Konstruktor der Form1 erzeugst.
public Form1()
{
InitializeComponent();
Form1 myForm = new Form1();
Davon abgesehen, dass sowas kein Sinn macht, geht das eben auch nicht, weil das eine endlose Rekursion erzeugt bis es dann eine StackOverflowException gibt.
Musst also das Snippet von Jamikus schon an der richtigen Stelle verwenden.
Hat aber nichts mit der Width zutun.
Ich kann nur raten, was Du willst, weils nicht wirklich ersichtlich ist:
Innerhalb der Form Instanz:
this.Width;
Außerhalb der Forminstanz:
Form1 myForm = new Form1();
int aktuelleBreite = myForm.Width;
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Zwecks eines Erfolgserlebnisses (weitere Optimierungen oder "best practices" bleiben aussen vor): man erstellt wieder eine Windows Forms GUI-Applikation und platziert dort einen Button. In der _click-Methode dann:
private void button1_Click(object sender, EventArgs e)
{
Form1 myForm = new Form1();
int aktuelleBreite = myForm.Width;
Console.WriteLine("aktuelleBreite :" + aktuelleBreite);
Console.ReadLine();
}
Ausgabe im Debuggen: "WindowsFormsApp_Console_Resolution.exe" (CLR (..)
aktuelleBreite :816
(..) beendet.
Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉
[...]
this.Width;
[...]
Moin!
Genau das war/ist es!
👍
Danke an alle for help!
mfg hans