【问题标题】:Created two buttons but only able to center one创建了两个按钮,但只能居中一个
【发布时间】:2016-11-18 07:51:59
【问题描述】:

我已经搜索了堆栈溢出但无法得到确切的答案..

我正在做一项学校作业,其中我使用 C# 控制台应用程序而不是 Windows 窗体应用程序创建了两个按钮。现在我想将它们都居中,我可以将其中一个居中,但不能同时居中

这就是我如何使我的第一个按钮居中,但我如何才能将它们都居中?

Button btn_1 = new Button();
btn_1.Parent = this;
btn_1.Location = new Point(
    (ClientSize.Width - btn_1.Width) / 2,
    (ClientSize.Height - btn_1.Height) / 2
);
btn_1.Text = "some text";

通过这种方式,我只能将一个按钮居中,如何将它们居中...如果我使用相同的代码,那么它们将重叠,但如何使它们都完全出现在中心

【问题讨论】:

  • 你能贴出第二个按钮的代码吗?
  • 是相同的代码,但按钮名称不同
  • 是的,我知道...这就是为什么我说这样我只能居中一个按钮如何居中它们...如果我使用相同的代码,那么它们将重叠但如何使它们都完全显示在中心
  • 你指定X和Y位置了吗?按钮在哪里?他们是如何订购的?相互之上?并排?
  • 我在问如何订购它们,我没有订购它们我只是做了两个按钮.. 告诉我如何让它们出现在中心。您更清楚要指定或不指定哪些内容:(

标签: c# console-application


【解决方案1】:

我知道这个问题有一个公认的答案。但我会提出一种(我认为)更简单的方法来使 2 个按钮居中。我要做的是使用一个面板,将按钮放在里面,然后将面板居中,如下所示:

Panel p1 = new Panel();
p1.Size = new Size(0, 0);
p1.AutoSize = true;
Button b1 = new Button();
b1.AutoSize = true;
b1.Text = "Some text";
Button b2 = new Button();
b2.AutoSize = true;

b2.Text = "Some other text";

p1.Controls.Add(b1);
p1.Controls.Add(b2);
b2.Location = new Point(b1.Left, b1.Top+b1.Height);


this.Controls.Add(p1);
p1.Location = new Point((ClientSize.Width - p1.Width) / 2,
                       (ClientSize.Height - p1.Height) / 2);

【讨论】:

    【解决方案2】:

    如果布局在彼此之上,那么您可以将第一个Button 作为参考。指定第二个Button的Y坐标为Button的(Y位置+高度)1:

    Button btn_1 = new Button();
    btn_1.Parent = this;
    btn_1.Location = new Point(
        (ClientSize.Width - btn_1.Width) / 2,
        (ClientSize.Height - btn_1.Height) / 2
    );
    btn_1.Text = "some text";
    
    this.Controls.Add(btn_1);
    
    Button btn_2 = new Button();
    btn_2.Parent = this;
    
    // here use the coordinates of the first button
    btn_2.Location = new Point(btn_1.Location.X,
        btn_1.Location.Y + btn_1.Height  // position it below the first button
        );
    
    btn_2.Text = "2";
    
    this.Controls.Add(btn_2);
    

    此代码会将第二个按钮放在第一个按钮的下方。

    编辑:

    如果您希望两个按钮也都以 Y 轴为中心,您需要将第一个按钮 1 按钮高度单位向上移动,如下所示:

    btn_1.Location = new Point(
        (ClientSize.Width - btn_1.Width) / 2,
        (ClientSize.Height - btn_1.Height * 2) / 2 // subtract 2 * the height!
    );
    

    减去 2 * 高度,因为您有 2 个按钮

    【讨论】:

    • 谢谢谢谢谢谢:)
    • 所以它们都在中心或 btn1 在中心,其他在下面?
    • @AmmarAhmed 第二个就在下面。我编辑了我的答案,使它们都在 Y 维度的中心
    猜你喜欢
    • 2015-12-01
    • 2019-11-23
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    相关资源
    最近更新 更多