如何向布局添加按钮? - C#
How can I add a button to the layout? - 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"};
}
}
}
您需要将按钮添加到表单,而不是 Main 方法!
您的代码的问题是它在错误的位置 - 实际上,它只在 运行s 表单关闭后 ,因为 Application.Run
将 运行 您的表单置于消息循环中,允许触发 UI 事件。
您可以使用 Visual Studio WinForms Designer(如果使用 Visual Studio),或者在 InitializeComponent()
方法 之后手动添加代码 - 所以,要么在构造函数中,要么在任何 Form 启动事件中,例如 Load 或 Shown。
将 Button
(或任何动态实例化的控件,就此而言)添加到表单的 Controls
集合同样非常重要 - 否则,您的 Button
不会未显示:
Button button = new Button {Height = 100, Width = 100, Text = "Test"};
this.Controls.Add(button);
当然有动态生成控件的用例;然而,在表单 运行s 之前手动 构建控件是非常不寻常的 - 在大多数动态控件生成的情况下,表单已经启动并且 运行 ning - 动态生成是为了响应某些用户操作。我建议使用设计器进行一般 UI 布局。
您在 Visual Studio 2019 年打开您的项目(不是 Visual Studio 代码,不是 JetBrains Rider)- 如果您的上下文符合许可条件,则存在免费版本。如果您没有资格获得免费许可证,您[r workplace] 可以轻松负担得起某种形式的许可证
您在解决方案资源管理器中双击 Form1,然后您会看到类似于 运行 程序时表单的样子,然后您打开控件工具面板和从中拖出一个按钮并将其放到表单上...
但是,如果您想进入 hand-writing 大量无聊的重复代码来构建 UI,那么您可以将控件添加到其他控件的 Controls 集合中,即:
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 - 您会明白我们这样做的原因借助设计工具! :)
Wouldn't it be faster to learn if I didn't use the Designer tool?
海事组织,没有。这就像在说“如果我在记事本中手动编写 SVG 代码而不是使用 Inkscape/Gimp 以视觉方式绘制图像,或者通过在十六进制编辑器中输入字节来创建 PNG,学习起来会不会更快”? =12=]
如此接近原始低水平意味着您最终会“只见树木不见森林”,这会阻碍您的学习。有关抽象的冗长论述以及我们为何使用 them/how 它们适用于每个日常过程,包括生活中的学习和操作,请参阅评论线索
我找不到任何将按钮添加到布局的方法。
我正在尝试将子项(按钮)添加到布局中,但找不到任何方法。
源代码:
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"};
}
}
}
您需要将按钮添加到表单,而不是 Main 方法!
您的代码的问题是它在错误的位置 - 实际上,它只在 运行s 表单关闭后 ,因为 Application.Run
将 运行 您的表单置于消息循环中,允许触发 UI 事件。
您可以使用 Visual Studio WinForms Designer(如果使用 Visual Studio),或者在 InitializeComponent()
方法 之后手动添加代码 - 所以,要么在构造函数中,要么在任何 Form 启动事件中,例如 Load 或 Shown。
将 Button
(或任何动态实例化的控件,就此而言)添加到表单的 Controls
集合同样非常重要 - 否则,您的 Button
不会未显示:
Button button = new Button {Height = 100, Width = 100, Text = "Test"};
this.Controls.Add(button);
当然有动态生成控件的用例;然而,在表单 运行s 之前手动 构建控件是非常不寻常的 - 在大多数动态控件生成的情况下,表单已经启动并且 运行 ning - 动态生成是为了响应某些用户操作。我建议使用设计器进行一般 UI 布局。
您在 Visual Studio 2019 年打开您的项目(不是 Visual Studio 代码,不是 JetBrains Rider)- 如果您的上下文符合许可条件,则存在免费版本。如果您没有资格获得免费许可证,您[r workplace] 可以轻松负担得起某种形式的许可证
您在解决方案资源管理器中双击 Form1,然后您会看到类似于 运行 程序时表单的样子,然后您打开控件工具面板和从中拖出一个按钮并将其放到表单上...
但是,如果您想进入 hand-writing 大量无聊的重复代码来构建 UI,那么您可以将控件添加到其他控件的 Controls 集合中,即:
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 - 您会明白我们这样做的原因借助设计工具! :)
Wouldn't it be faster to learn if I didn't use the Designer tool?
海事组织,没有。这就像在说“如果我在记事本中手动编写 SVG 代码而不是使用 Inkscape/Gimp 以视觉方式绘制图像,或者通过在十六进制编辑器中输入字节来创建 PNG,学习起来会不会更快”? =12=]
如此接近原始低水平意味着您最终会“只见树木不见森林”,这会阻碍您的学习。有关抽象的冗长论述以及我们为何使用 them/how 它们适用于每个日常过程,包括生活中的学习和操作,请参阅评论线索