【问题标题】:Is there a way to "format paint" the formatting of a form element in VS Code Winforms?有没有办法在 VS Code Winforms 中“格式化绘制”表单元素的格式?
【发布时间】:2021-09-10 13:32:02
【问题描述】:

我正在使用 Visual Studio 构建带有 .Net Core 的 C# Winform。它工作得很好,但挑战在于我花时间调整了一个文本框,让它看起来像我想要的那样。我打算再添加几个,如果可以避免的话,我宁愿不必再次手动选择所有样式选项。

基本上我使用文本框作为信息框(也许不是最好的方法,但这是我能找到的唯一方法。

目前,我手动设置了两个信息框的值,但是当我添加更多时,有没有办法复制关键格式选项,这样我就不必每次都手动选择每个属性?

【问题讨论】:

  • 复制并粘贴到设计器保留属性(名称和位置除外)。此外,您可以同时选择多个控件来设置它们的属性。

标签: c# .net winforms


【解决方案1】:

在 winforms 中,您始终可以从现有控件中派生出您自己的控件。在第一次成功编译后,它们会自动出现在工具箱中,您可以从那里将它们拖放到您的表单中。

public class InfoBox : TextBox
{
    private static readonly Font InfoFont = new Font("Arial", 9);

    public InfoBox()
    {
        // Set initial properties
        ReadOnly = true;
        Multiline = true;
        BackColor = Color.Silver;
        Font = InfoFont;
    }
}

您还可以添加新属性和覆盖方法来更改行为。例如,您可以通过覆盖 OnPaint 来完全改变外观。新属性将出现在“属性”窗口中,您可以在其中手动设置它们。

信息框也可以基于Label 控件。

另见

此代码示例需要以下用法:

using System.Drawing;
using System.Windows.Forms;

【讨论】:

  • 所以你是说如果我使用代码块,我可以在每个控件的初始化时手动设置它?
  • 是的,在本例中,我创建了一个名为InfoBox 的控件,并在构造函数中设置了所需的属性默认值。您可以稍后在属性窗口中覆盖它们,也可以在表单中以编程方式覆盖它们。与其他控件一样,您可以根据需要插入任意数量的副本,并且只需要编写一次此代码。只需复制/粘贴此代码,编译,然后新控件将像其他控件一样出现在工具箱中。
【解决方案2】:

我发现的最简单的方法是在表单设计器本身中突出显示框、复制和粘贴。新字段将被赋予可以轻松更改的通用名称,但如果您希望它们的其余格式相同,则可以这样做。请注意,它不会自动复制任何事件(我可以看到),因此您仍然可以在必要时手动设置这些事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多