Laden...

Control Position und Größe sind Random beim öffnen der View

Erstellt von Duesmannr vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.524 Views
D
Duesmannr Themenstarter:in
161 Beiträge seit 2017
vor 5 Jahren
Control Position und Größe sind Random beim öffnen der View

Guten Tag,

ich habe ein UserControl, worauf eine TextBox und ein Label ist.

Hier einmal kurz ein Stück Code:


//Das ist die Erstellung des eigentlichen UserControls
        private void InitializeComponent()
        {
            this.labelBorder = new System.Windows.Forms.Label();
            this.textBoxInput = new Dousy.Class.Control.TextBox();
            this.SuspendLayout();

            this.labelBorder.Location = new System.Drawing.Point(0, 24);
            this.labelBorder.Size = new System.Drawing.Size(100, 2);
            this.textBoxInput.Location = new System.Drawing.Point(0, 0);
            this.textBoxInput.Size = new System.Drawing.Size(100, 26);

            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Controls.Add(this.labelBorder);
            this.Controls.Add(this.textBoxInput);
            this.Name = "UserControlTextBox";
            this.Size = new System.Drawing.Size(100, 26);
            this.Load += new System.EventHandler(this.UserControlTextBox_Load);
            this.ResumeLayout(false);
        }

Das Problem ist. Wenn ich das UserControl einer Form hinzufüge, die Location und Größe mit dem Designer anpasse und die Form schließe (nachdem ich alles gespeichert habe). Und ich später die Form wieder öffne, sind alle UserControls irgendwo anders. D.h. das die Größe davon Random ist und die Location auch.

Auf der Form sieht der Code dann so aus:


//Einstellung des UserControls auf der Form
        private void InitializeComponent()
        {
            this.userControlTextBoxPassword = new Dousy.Class.Control.UserControlTextBox();

            // 
            // userControlTextBoxPassword
            // 
            this.userControlTextBoxPassword.BorderColor = System.Drawing.Color.Gray;
            this.userControlTextBoxPassword.BorderColorHover = System.Drawing.Color.DarkGray;
            this.userControlTextBoxPassword.BorderColorHoverActive = true;
            this.userControlTextBoxPassword.BorderColorSelected = System.Drawing.Color.Orange;
            this.userControlTextBoxPassword.BorderColorSelectedActive = true;
            this.userControlTextBoxPassword.BorderDirection = System.Windows.Forms.DockStyle.Bottom;
            this.userControlTextBoxPassword.BorderWidth = 3;
            this.userControlTextBoxPassword.Location = new System.Drawing.Point(16, 438);
            this.userControlTextBoxPassword.Margin = new System.Windows.Forms.Padding(36, 33, 36, 33);
            this.userControlTextBoxPassword.Name = "userControlTextBoxPassword";
            this.userControlTextBoxPassword.Placeholder = true;
            this.userControlTextBoxPassword.PlaceholderActiveForeColor = System.Drawing.Color.Gray;
            this.userControlTextBoxPassword.PlaceholderFont = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.userControlTextBoxPassword.PlaceholderForeColor = System.Drawing.Color.Gray;
            this.userControlTextBoxPassword.PlaceholderText = "Kennwort";
            this.userControlTextBoxPassword.Size = new System.Drawing.Size(403, 30);
            this.userControlTextBoxPassword.TabIndex = 4;
            this.userControlTextBoxPassword.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
            this.userControlTextBoxPassword.TextBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
            this.userControlTextBoxPassword.TextFont = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.userControlTextBoxPassword.TextForeColor = System.Drawing.Color.White;
            this.userControlTextBoxPassword.TextInput = "";
            this.userControlTextBoxPassword.UseSystemPasswordChar = true;
        }

Habt Ihr eine Idee woran es liegen könnte?

Habe hier einmal die Location und die Size von dem UserControl wo dieser lag:


Location: 41; 1295
Size: 1068; 89

Oder kann es daran liegen das ich das Projekt auf zwei verschiedenen Geräte bearbeite?
Die aber die gleiche Auflösung haben. Mir fällt auch auf, dass andere Controls auch nicht mehr auf deren Ursprungspositionen sind, wie auf dem anderen Gerät.

1.040 Beiträge seit 2007
vor 5 Jahren

Kann ich nicht nachstellen.

Wann verändern sich die Größen?
Im Designer oder zur Laufzeit?

Wo hast du die Location/Size her, die du unten angegeben hast?
Im Designer stehen andere Werte.

D
Duesmannr Themenstarter:in
161 Beiträge seit 2017
vor 5 Jahren

Alles im Designer.

Wenn ich die Form igendwann später wieder öffne sind die Controls irgendwo auf der Form.
Im Designer sind die Werte dann auch verändert, wie ich angegeben habe.

1.040 Beiträge seit 2007
vor 5 Jahren

Passiert das auch auf dem gleichen Rechner?

656 Beiträge seit 2008
vor 5 Jahren

Uns ist das früher immer im Designer passiert, wenn der AutoScaleMode gesetzt war:

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

Oft in Kombination mit übersetzten Forms, sobald die Sprache geändert wurde.

Haben wir einfach "gelöst" indem wir den AutoScaleMode auf None gesetzt haben; aber das kommt mit dem Nachteil dass das Formular nicht wirklich skaliert wenn man auf unterschiedlichen DPI unterwegs ist.

D
Duesmannr Themenstarter:in
161 Beiträge seit 2017
vor 5 Jahren

Passiert das auch auf dem gleichen Rechner?

Meistens, wenn ich den Rechner wechsel. Aber ja auch.

Haben wir einfach "gelöst" indem wir den AutoScaleMode auf None gesetzt haben; aber das kommt mit dem Nachteil dass das Formular nicht wirklich skaliert wenn man auf unterschiedlichen DPI unterwegs ist.

Das ist einer der ersten Eigenschaften die ich immer auf None setze.

1.040 Beiträge seit 2007
vor 5 Jahren

Komisch.

Versuche mal das: [Tutorial] Vertrackte Fehler durch Vergleich von echtem Projekt mit minimalem Testprojekt finden
Und wenn du ein Minimalprojekt hast, zeige mal den gesamten Code der Form und des UserControls.