Die Größe Steuert, mit Form, Größe
Habe ich gelesen, mehrere stack-überlauf Fragen, ohne dass eine gut funktionierende Lösung zu meinem problem. Wie kann ich die Größe meiner controls, wenn die form geändert wird? Ich möchte, dass Sie größer oder kleiner, wenn die form größer oder kleiner.
In visual basic war dies ziemlich einfach zu tun mit der form.Zoom-Eigenschaft (die nicht wirklich eine Größenänderung von Steuerelementen natürlich, aber gelöst, was ich brauchte). Dies ist leider nicht verfügbar in der C# - winforms.
Hier ist einige andere Dinge, die ich versuchte ohne Glück:
private void formMain_Resize(object sender, EventArgs e)
{/*
double scale;
this.scaleWidth = (float)this.Width /(float)this.origWidth;
this.scaleHeight = (float)this.Height /(float)this.origHeight;
if (this.scaleHeight > this.scaleWidth)
{
scale = this.scaleHeight;
}
else
{
scale = this.scaleWidth;
}
foreach (Control control in this.Controls)
{
control.Height = (int)(control.Height * this.scaleHeight);
control.Width = (int)(control.Width * this.scaleWidth);
this.Refresh();
// control.Font = new Font("Verdana", control.Font.SizeInPoints * heightRatio * widthRatio);
}
///////This scaling didnt work for me either
//this.Scale(new SizeF(this.scaleWidth, this.scaleHeight));
//this.Refresh();
*/
}
Wenn ich ausversehen ein wirklich arbeiten Stichprobe von code auf einem anderen stack overflow Frage, die ich lieben würde, es zu sehen, aber die, die ich fand, waren ähnlich zu den oben genannten, die nicht arbeiten.
Vielleicht war ich missbraucht es und jemand posten könnte Beispielcode um zu zeigen, für diejenigen von uns, die halten, diese Frage, wie man über die Lösung des Problems.
Außerdem habe ich versucht, mit einigen der Anker - /docking-tools, die denken, Sie würden automatisch zulassen, aber das ist es nicht.
- Sie haben dock-und anchor-Eigenschaft.....versuchen Sie, Sie in einen besseren Weg....sollten Sie Ihre Schlüssel zum Erfolg, denke ich. Auch kann ich ein Screenshot von deinem UI?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die beste option ist die Verwendung einer
TableLayoutPanel
. SetzenTableLayoutPanel
auf die form, dieDock
EigenschaftFill
, erstellen Sie die erforderlichen Zeilen und Spalten, und legen Sie die Steuerelemente im inneren der Zellen. Natürlich müssen SieDock/Anchor
auf die Steuerelemente innerhalb der Zellen, so dass Sie auf Veränderungen reagieren, um die Größe der Zelle. In einigen Situationen müssen Sie möglicherweise um einePanel
in eine Zelle und drop Steuerelemente drin, weil jede Zelle nur eine einzelne Kontrolle. Sie können auch einstellen müssenRowSpan
/ColumnSpan
auf die Kontrollen.Durch die Verwendung eines
TableLayoutPanel
haben Sie die vollständige Kontrolle darüber, wie Ihre cotrols angeordnet werden sollen. Sie können festlegen, absolute oder prozentuale Größe für die Zeilen und Spalten.Verwenden Anker der Kontrolle. Es gibt eine option, auf die Verankerung des oberen, unteren, linken und rechten. Und du bist gut zu gehen.
Was Sie versuchen zu tun, in deinem code ist zum ändern der Größe von Steuerelementen, die nicht so guten Ansatz. Im Allgemeinen ist die Größe der Schaltflächen und Textfelder sollten nicht geändert werden, wenn Sie die Größe Ihrer form, Sie brauchen aber oft zu bewegen (Speicherort ändern). Einige Steuerelemente brauchen, um die Größe zu ändern, nach der re-size und form, aber in den meisten Fällen nur eine dimension. Die zentrale Steuerung, die für den Arbeitsbereich (wenn Sie entwickeln die Tools für das zeichnen, zum Beispiel) sollte sich ändern, die Größen der beiden Dimensionen. All dies können Sie erreichen, durch die richtige Festlegung Dock und/oder Anker-Eigenschaften der Steuerelemente.
All dies sind auch leicht in das Bedienfeld "Eigenschaften", wenn Sie mit dem designer.
Aber wenn das nicht genug für Sie, in seltenen Fällen, Sie definitiv möchten, ändern Sie nur die Lage der Steuerung:
Fand ich eine alternative Lösung, die gut funktioniert für mich über jede negative oder positive Kommentare über die Lösung.
Über mehrere Geteilte Behälter-und Split-Container im Split-Container in verschiedenen Regionen bin ich in der Lage, um Abschnitt aus dem primären Teile des Layouts und innerhalb der dort unter Verwendung Andocken und Verankerung ich bin in der Lage zu erreichen, genau das, was ich tun wollte - hat es wunderbar funktioniert.
Möchte ich darauf hinweisen, ich bin mir bewusst, dass einige Leute online erwähnen split-Container verwenden viele Ressourcen.
Wenn Ihre Kontrollen sind in einer group box, sicher sein, um die Gruppe-Boxen Eigenschaften zu ändern. Kontrollen im inneren der box sind gesteuert durch die box. Die Größe der box (es sei denn, es ist innerhalb einer anderen box) wird gesteuert durch die form.