如何在布局中添加按钮?-C#



我找不到任何将按钮添加到布局中的方法。

我正在尝试将子(按钮(添加到布局中,但找不到任何方法。

源代码:

using System;
using System.Windows.Forms;
namespace WinForms
{
internal static class Program
{
/// <summary>
///     The main entry point for the application.
/// </summary>
[STAThread]
private static void Main()
{
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
Button button = new Button {Height = 100, Width = 100, Text = "Test"};

}
}
}
  • 您在Visual Studio 2019(不是Visual Studio Code,不是JetBrains Rider(中打开您的项目-如果您的上下文符合许可证条件,则存在免费版本。如果你没有资格获得免费许可证,你可以很容易地获得某种形式的许可证

  • 您在解决方案资源管理器中双击Form1,然后您会看到一些类似于运行程序时表单的内容,然后打开控制工具面板,从中拖动一个按钮并将其放到表单上…

但是,如果你想着手编写大量无聊的重复代码来构建UI,那么你可以将控件添加到其他控件的控件集合中,即:

Form1 f = new Form1();
Button button = new Button {Height = 100, Width = 100, Text = "Test"};
f.Controls.Add(button);
Application.Run(f);

每个控件都有一个控件集合,可以向其中添加其他控件(不仅仅是你认为的"有子控件的东西,如Panel或GroupBox"-有些控件是其他控件的集合,如NumericUpDown是一个文本框和几个按钮(

例如,您需要编写多少代码,请在设计视图中布置一个外观合理的UI,然后打开Form1.Designer.cs-您将了解我们为什么要借助设计工具来完成此操作!:(


如果我不使用Designer工具,学习不是会更快吗?

IMO,不。这就像在说"如果我在记事本中手工编写SVG代码,而不是使用Inkscape/Gimp直观地绘制图像,学习起来会不会更快。。或者通过在十六进制编辑器"中键入字节来创建PNG;

如此接近原始的低水平意味着你最终会";看不见树木的木头";它阻碍了你的学习。关于抽象概念的长篇大论,以及我们为什么使用它们/它们如何应用于每一个日常过程,包括生活中的学习和操作,请参阅评论线索

您需要将按钮添加到Form,而不是Main方法!

代码的问题是它放错了地方——实际上,它只在表单关闭后运行,因为Application.Run将在消息循环中运行表单,从而允许UI事件触发。

您可以使用Visual Studio WinForms设计器(如果使用Visual Studio(,也可以在InitializeComponent()方法之后手动添加代码,也可以直接在构造函数中或在任何Form启动事件(如Load或Shown(中添加。

同样,将Button(或任何动态实例化的控件(添加到Form的Controls集合中也是非常重要的——否则,您的Button将不会显示:

Button button = new Button {Height = 100, Width = 100, Text = "Test"};
this.Controls.Add(button); 

当然存在用于动态生成控件的用例;然而,在表单运行之前手动构建控件是非常不寻常的-在大多数动态控件生成的情况下,表单是启动并运行的-动态生成是对一些用户操作的响应。我建议使用设计器进行常规UI布局。

最新更新