【问题标题】:Dynamically change a Windows Form window title (during runtime)动态更改 Windows 窗体窗口标题(在运行时)
【发布时间】:2014-02-27 07:48:08
【问题描述】:

我正在编写一个基于 C# .NET 4.5 的 Windows 窗体应用程序。

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

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

但是,到目前为止,我的所有研究都表明,这必须在加载/显示表单之前完成。我希望能够在应用程序运行时更改窗口标题,就像网络浏览器更改其窗口标题以包含当前网页的名称一样。

这可能吗?如果有,怎么做?

谢谢!

【问题讨论】:

  • 我做了一个按钮,在点击事件中我写了this.Text = "Clicked";,它改变了它。
  • 看起来this.Text 在表单加载后工作。我认为它之前没有工作,但再次尝试它确实工作正常。我会结束这个问题。打扰了!
  • this.Text = "";这应该可以完成工作。

标签: c# winforms


【解决方案1】:

试试这个:

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

或者那个:

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

您可以随时调用这些方法,而不是依赖于客户端操作。区别在于 Update 仅重绘 FormRefresh 重绘 Form 以及所有包含的控件

【讨论】:

    【解决方案2】:

    您在哪里为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 标志的错误示例。这不是问题,因为在那里设置窗口标题(在加载窗口之前)工作正常。我运行时遇到问题。
    • 您可以随时设置表单的Text属性,当窗口重新绘制时会反映出来。
    【解决方案3】:

    我这样做的方式是更改加载事件中的文本属性。像这样

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多