양식 글꼴 크기를 사용하여 응용 프로그램의 컨트롤을 제대로 조절하지 못했습니다. 문제는 양식이 사용자 동작에 대한 응답으로 동적으로 컨트롤을 추가한다는 것입니다. 글꼴 크기가 처음에 설정된 경우 폼에있는 컨트롤은 완벽하게 크기가 조정되지만 나중에 추가 된 컨트롤에는 문제가 있습니다. 글꼴의 크기는 적절하지만 위치와 크기는 적절하지 않습니다. 행동에서 볼 빈 양식 간단한 프로젝트를 만들고 다음 코드를 붙여 넣으려면AutoScaleMode.Font 및 동적으로 추가 된 컨트롤
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
SplitContainer split = new SplitContainer();
split.Dock = DockStyle.Fill;
this.Controls.Add(split);
// Group 1
split.Panel1.Controls.Add(NewGroup());
this.Font = new Font(this.Font.FontFamily, this.Font.Size * 2);
// Group 2
split.Panel2.Controls.Add(NewGroup());
split.SplitterDistance = this.Width/2;
}
public GroupBox NewGroup()
{
GroupBox groupBox = new GroupBox();
groupBox.Size = new System.Drawing.Size(132, 92);
groupBox.Text = "groupBox";
groupBox.SuspendLayout();
Label label = new Label();
label.AutoSize = true;
label.Location = new Point(6, 16);
label.Text = "label";
groupBox.Controls.Add(label);
Button button = new Button();
button.Location = new Point(6, 58);
button.Size = new Size(93, 28);
button.Text = "button";
groupBox.Controls.Add(button);
CheckBox checkBox = new CheckBox();
checkBox.AutoSize = true;
checkBox.Location = new Point(47, 16);
checkBox.Text = "checkBox";
groupBox.Controls.Add(checkBox);
TextBox textBox = new TextBox();
textBox.Location = new Point(6, 34);
textBox.Size = new Size(120, 20);
textBox.Text = "text";
groupBox.Controls.Add(textBox);
groupBox.ResumeLayout();
return groupBox;
}
}
당신은 내가 두 번째 그룹 상자 추가에 대해서 이야기하고 효과를 볼 수 있습니다. 초기 크기가 변경된 후에 컨트롤을 추가하려면 어떻게해야합니까?
UPDATE
I는 다음과 같이 두 번째 NewGroup
전화를 변경하는 경우 :
GroupBox group = NewGroup();
split.Panel2.Controls.Add(group);
group.Scale(new SizeF(2.0f, 2.0f));
결과 거의 정확합니다. 그것은 많은 경우에 픽셀 또는 2에 의해 떨어져 경향이 있으며, 복잡한 형태로 이것은 훨씬 더 가시적으로 나타나기 시작합니다. 컨트롤 사이에 최대한 일관성있게 스케일링이 필요하므로이 접근법을 피하고 싶습니다.
이러한 문제도 발생합니다. – Eric