Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将按钮放置在表单末尾,但AutoScroll=true时_C#_Winforms - Fatal编程技术网

C# 如何将按钮放置在表单末尾,但AutoScroll=true时

C# 如何将按钮放置在表单末尾,但AutoScroll=true时,c#,winforms,C#,Winforms,我有多个GroupBox,这就是为什么我将AutoScroll设置为true。我在表单中创建所有控件。如何在所有GroupBox之后放置一个按钮 代码,我在其中创建GroupBoxes: for (int i = 0; i < 10; i++) { GroupBox gb = new GroupBox(); gb.Name = "GroupBox" + (i + 1);

我有多个
GroupBox
,这就是为什么我将
AutoScroll
设置为true。我在表单中创建所有控件。如何在所有
GroupBox
之后放置一个按钮

代码,我在其中创建
GroupBox
es:

 for (int i = 0; i < 10; i++)
            {
                GroupBox gb = new GroupBox();
                gb.Name = "GroupBox" + (i + 1);
                gb.Size = new Size(500, 200);
                gb.Location = new Point(40, loc);
                gb.BackColor = System.Drawing.Color.Aquamarine;

                Label q_text = new Label(); // текст питання
                q_text.Name = "label" + (i + 1);
                q_text.Text = "Питання" + (i + 1);
                q_text.Font = new Font("Aria", 10, FontStyle.Bold);
                q_text.Location = new Point(10, 10);
                gb.Controls.Add(q_text);
                int iter = q_text.Location.Y + 30;
                if (i <= 5)
                {
                    foreach (string key in questions[i].answers.Keys)
                    {
                        RadioButton rb = new RadioButton();
                        rb.Text = key;
                        rb.Size = new Size(120, 25);
                        rb.Location = new Point(q_text.Location.X + 10, iter);
                        iter += 30;
                        gb.Controls.Add(rb);
                    }
                }else
                    if (i > 5)
                    {
                        foreach (string key in questions[i].answers.Keys)
                        {
                            CheckBox rb = new CheckBox();
                            rb.Text = key;
                            rb.Size = new Size(120, 25);
                            rb.Location = new Point(q_text.Location.X + 10, iter);
                            iter += 30;
                            gb.Controls.Add(rb);
                        }

                    }                

                this.Controls.Add(gb);
                loc += 200;
for(int i=0;i<10;i++)
{
GroupBox gb=新的GroupBox();
gb.Name=“GroupBox”+(i+1);
gb.尺寸=新尺寸(500200);
gb.位置=新点(40,loc);
gb.BackColor=System.Drawing.Color.Aquamarine;
标签q_text=新标签()//
q_text.Name=“label”+(i+1);
q_text.text=“Паааа”+(i+1);
q_text.Font=新字体(“Aria”,10,FontStyle.Bold);
q_text.Location=新点(10,10);
gb.控件.添加(q_文本);
int iter=q_text.Location.Y+30;
如果(i)5
{
foreach(问题[i].答案.Keys中的字符串键)
{
复选框rb=新复选框();
rb.Text=键;
rb.尺寸=新尺寸(120,25);
rb.Location=新点(q_text.Location.X+10,iter);
iter+=30;
gb.Controls.Add(rb);
}
}                
this.Controls.Add(gb);
loc+=200;

由于您使用的是
loc
变量,因此可以执行以下操作:

btnMyButton.Locaction= new Point(40, loc);
无论如何,如果要动态查找最后一个组框的位置,请尝试以下操作:

double leftPos=0,topPos=0;
foreach(Control c in Forms.Controls)
{
    if(c.Name=="GroupBox")
    {
        if(c.Left>leftPos)
            leftPos=c.Left;
        if(c.Top>topPos)
            topPos=c.Top;
    }
}

将所有可滚动的分组框放在一个设置为AutoScroll=true的面板中。此面板下方是另一个包含固定按钮的面板。此面板固定在底部。

您使用的是FlowLayoutPanel还是什么?我们需要查看您的一些代码!btn.Location=new Point(40,loc);如何找到最后一个groupbox?int this.Controls.我找不到合适的method@user3528837:您正在动态创建分组框,对吗?因此,您创建分组框的代码也是如此。我也这么认为。但我尝试使用您的method@user3528837:您有一个
loc
变量。那么为什么需要动态查找它?无论如何,已将其添加到我的ans中看起来我猜对了他想做什么;D