首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinForms设计器应该从CodeBehind运行方法吗?

WinForms设计器应该从CodeBehind运行方法吗?
EN

Stack Overflow用户
提问于 2017-12-20 12:29:44
回答 1查看 252关注 0票数 0

我有一个小的WinForms应用程序,主窗口中心只有一个按钮。那就是按钮文本是按钮1。代码背后的构造函数(F7)在调用F7后将按钮文本更改为Hello

运行时显示"Hello“,但在设计时设计器显示"Button 1”。在WinForms中运行自定义UI代码的正确方法是什么?如果我手动将该代码放入designer文件中,则下次保存designer时,更改将被重写。

这是我的代码:

代码语言:javascript
复制
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.button1.Text = "Hello World";
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-12-20 13:02:05

标题是:

WinForms设计器应该从CodeBehind运行方法吗?

设计器很棘手,因为您正在设计新类型的Form1,它实际上将创建一个基类Form的实例,然后让您修改它,为您生成designer.cs和资源。

要确保代码在designer中运行,必须将其移动到基类。这可以通过定制控件来实现。

代码语言:javascript
复制
public class MyForm: Form
{
    protected button1;

    public MyForm()
    {
        button1 = new Button { Text = "Hello World" }; // here
        Controls.Add(button1);
    }
}

现在,当您从它继承新表单时,所有这些表单都会有一个按钮。

代码语言:javascript
复制
public partial class Form1 : MyForm
{
    public Form1()
    {
        InitializeComponent();
    }
}

为了使新用户更容易使用,有UserControl。在编辑它时,后面的代码更改不会直接显示在设计器中。但是一旦完成,编译它并将其添加到另一个表单--当编辑另一个表单时,设计器将在那里运行您的代码。但是,在对用户控件后面的代码进行每次更改之后,您将不得不重新编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47906114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档