在运行时动态更改Windows窗体的窗口标题

10

我将编写一个基于C# .NET 4.5的Windows Forms应用程序。

我知道如何通过编程方式修改主窗口的标题,如下所示:

public partial class MyForm: Form
{
    public MyForm()
    {
        InitializeComponent();
        if (!PRODUCTION)
        {
            this.Text += " (test environment)";
        }
    }
 }

然而,目前我所做的所有研究都表明,这必须在加载/显示表单之前完成。我希望能够在应用程序运行时更改窗口标题,就像Web浏览器将其窗口标题更改为包含当前网页的名称一样。请问这是否可能?如果可能,怎么做呢?谢谢!

我创建了一个按钮,在点击事件中编写了 this.Text = "Clicked";,并且它发生了改变。 - Georgi
看起来 this.Text 在窗体加载后就能正常使用了。我之前以为在此之前它无法工作,但再次尝试后发现可以正常工作。我会关闭这个问题。非常抱歉打扰了! - jimtut
this.Text = "<必填文本>"; 这样就可以完成工作了。 - A J
3个回答

26

试试这个:

this.Text += " (test environment)";
this.Update();

或者那个:

this.Text += " (test environment)";
this.Refresh();

您可以在任何时候调用这些方法,不必依赖客户端操作。区别在于 Update 仅重绘 Form,而 Refresh 则会重绘 Form 及其包含的所有控件。


3

你在哪里定义并赋值给PRODUCTION?有人可以轻松更改表格上的文本。请检查以下代码:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            this.Text += "From Ctor";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Text = "New text";
        }
    }

带有PRODUCTION标志的坏示例。那不是问题,因为在那里设置窗口标题(在窗口加载之前)可以正常工作。我在运行时遇到了问题。 - jimtut
您可以随时设置窗体的Text属性,当窗口重新绘制时,它将被反映出来。 - danish

0

我做这个的方式是在Load事件中更改文本属性。像这样

    private void Form1_Load(object sender, EventArgs e)
    {
        this.Text = "new title [" + stringvariable + "]";
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接