在运行时创建复选框并以最佳方式将它们适合表单
Create checkboxes at runtime and fit them on form on the best possible way
我需要在 Winform 上创建 N 个复选框,然后我需要根据表单大小以最佳方式将它们放入表单中。
这是代码
int x = 0;
foreach (int i in Enumerable.Range(0, 5))
{
foreach (int j in Enumerable.Range(0, 4))
{
CheckBox b = new CheckBox();
b.Appearance = Appearance.Button;
b.Size = new System.Drawing.Size(80, 30);
b.Location = new Point(i * 80, j * 30);
b.Text = x.ToString();
b.CheckedChanged += B_CheckedChanged;
b.Tag = x.ToString("#00");
this.Controls.Add(b);
x++;
}
}
这段代码在 5 列和 4 行中创建了 20 个复选框,但我现在需要在用户输入 34 时以某种方式找到显示这些复选框的最佳方式。假设可能有 5 行,并且每行包含 8 个复选框,但最后一行将包含最后 2 个复选框。实现该目标的最佳方法是什么?
您可以使用将所有复选框放在 flowLayoutPanel 控件中,设置 flowlayoutpanel 控件锚点,以便 flowlayoutpanel 可以在表单大小更改时自动更改大小。
我需要在 Winform 上创建 N 个复选框,然后我需要根据表单大小以最佳方式将它们放入表单中。
这是代码
int x = 0;
foreach (int i in Enumerable.Range(0, 5))
{
foreach (int j in Enumerable.Range(0, 4))
{
CheckBox b = new CheckBox();
b.Appearance = Appearance.Button;
b.Size = new System.Drawing.Size(80, 30);
b.Location = new Point(i * 80, j * 30);
b.Text = x.ToString();
b.CheckedChanged += B_CheckedChanged;
b.Tag = x.ToString("#00");
this.Controls.Add(b);
x++;
}
}
这段代码在 5 列和 4 行中创建了 20 个复选框,但我现在需要在用户输入 34 时以某种方式找到显示这些复选框的最佳方式。假设可能有 5 行,并且每行包含 8 个复选框,但最后一行将包含最后 2 个复选框。实现该目标的最佳方法是什么?
您可以使用将所有复选框放在 flowLayoutPanel 控件中,设置 flowlayoutpanel 控件锚点,以便 flowlayoutpanel 可以在表单大小更改时自动更改大小。