Benutzer mit den meisten Antworten
Form1.Size nicht verfügbar

Frage
-
c# 2010 express
Es soll die Breite des Objektes Form1 abgefragt werden. Wenn Form1. im Programm angegeben wird, taucht im eingeblendeten Eigenschaftenmenü NICHT die Eigenschaft Size auf. Diese ist natürlich im normalen Eigenschaftenfenster vorhanden.
Eigentlich müßte
Form1.Size = new Size(100,100);
und
if (Form1.Size.Width > 100) ...
funktionieren, kann aber aus oben beschriebenem Grund nicht ausgewählt werden (und geht auch nicht).
Wie kann denn sonst programmtechnisch die Größe (Breite) des Objektes Form1 abgefragt werden?
Danke
Antworten
-
Hallo,
naja, es hängt schon davon ab, wo Du auf die Size Eigenschaft zugreifen möchtest -
ich bin von einem Zugriff von außen ausgegangen.Innerhalb von der Klasse (hier Form1) greift man in einer Methode über this (
oder über base, weil es sich hier um eine geerbte Eigenschaft handelt):using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Size = new Size(100, 200); // oder da in der Basisklasse definiert: base.Size = new Size(100, 200); } } }
this ist die Standardeinstellung in einer Instanz-Methode, wenn Du nichts weiter angibst.
Wenn Du auf dem Formular einen Button hast, ist der auf gleiche Weise verfügbar.
Ich empfehle Dir, das Galileo Online-Buch mal näher anzuschauen,
dort werden solche Grundlagen umfassender erläutert.Gruß Elmar
- Als Antwort markiert Waltereit Freitag, 10. Juni 2011 16:05
Alle Antworten
-
Hallo,
vermutlich weil Du das versuchst, ohne Instanz der Klasse zu erstellen.
Um die Größe eines Formulars zu verändern, musst Du zunächst eine Instanz erstellen:Ohne eine Instanz werden Dir nur die statischen Methoden und Eigenschaften der Klasse angezeigt.Form1 form = new Form1(); form.Size = new Size(100, 200); // oder auch form.Width = 100; form.Height = 200;
Siehe: Klassen (C#-Programmierhandbuch)
Für weitere Grundlagen auch http://openbook.galileocomputing.de/visual_csharp/visual_csharp_03_001.htmGruß Elmar
-
Hallo
Danke, aber das kann nicht das Problem sein. Wenn ich das so mache, kommt die Fehlermeldung:
Fehler 1 "Form1": Membernamen dürfen nicht mit dem Namen des sie einschließenden Typs identisch sein.
Das erscheint mir auch sinnvoll zu sein, denn immerhin existiert das Objekt Form1 ja zu diesem Zeitpunkt schon, es ist doch das leere Grundobjekt im Designer.
In der oben angegebenen Hilfe wird folgendes sinngemäß empfohlen:
public partial class Form1 : Form
{
// globale Variablen
Form FormZ = new Form();
Form FormZ = Form1;
....Das ergibt aber die Fehlermeldung:
Fehler 1 "Zeiger.Form1" ist ein(e) "Typ", wird aber wie ein(e) "Variable" verwendet.Der Fehler scheint woanders zu liegen. Bei jedem beliebigen Objekt, zB einem button, kann ich beim Programmieren auf alle eigenschaften zugreifen, wie zB button1.text = "Hallo"; Warum geht das nicht für Form1.Size = new Size(100,100);? Wie geht das stattdessen?
Vielen Dank
-
Hallo,
naja, es hängt schon davon ab, wo Du auf die Size Eigenschaft zugreifen möchtest -
ich bin von einem Zugriff von außen ausgegangen.Innerhalb von der Klasse (hier Form1) greift man in einer Methode über this (
oder über base, weil es sich hier um eine geerbte Eigenschaft handelt):using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.Size = new Size(100, 200); // oder da in der Basisklasse definiert: base.Size = new Size(100, 200); } } }
this ist die Standardeinstellung in einer Instanz-Methode, wenn Du nichts weiter angibst.
Wenn Du auf dem Formular einen Button hast, ist der auf gleiche Weise verfügbar.
Ich empfehle Dir, das Galileo Online-Buch mal näher anzuschauen,
dort werden solche Grundlagen umfassender erläutert.Gruß Elmar
- Als Antwort markiert Waltereit Freitag, 10. Juni 2011 16:05