任务栏中的应用程序标题,但不是标题栏

时间:2011-03-09 12:05:47

标签: c# .net winforms titlebar

这是我正在做的一件奇怪的事情,但是如何在任务栏中设置winform表单的标题,但是标题栏中不是

4 个答案:

答案 0 :(得分:1)

好的,我的临时工作是这样的:

在运行时/设计时,清除表单的文本属性(Form1或其适用的任何表单),并在触发Minimize或Hide()事件时,更改Text属性以显示Title。因此,当表单被隐藏或最小化时,您无论如何都无法看到标题栏,但您将能够在任务栏上看到标题!当Form稍后最大化时,或者Form.WindowState == WindowState.Normal时,再次清除Text属性。 : - )

我想知道这是否是MS采取的方法!?

编辑:

好的,很好,我有一些工作代码的yumminess:

如果您使用的是Visual Studio,请转到“设计视图”,选择“表单”控件,打开“属性”窗格,单击“事件”选项卡,然后双击“调整大小”事件。应显示代码视图。在刚刚创建的Resize()代码中,输入以下内容:

private void Form_Resize( object sender, System.EventArgs e )
{
    if( this.WindowState == FormWindowState.Minimized ) 
     this.Text "Some uber-awesome title.";
}

第2步: 当您想要再次显示/最大化表单时,只需编辑上面的内容,如下所示:

private void Form_Resize( object sender, System.EventArgs e )
{
    if( this.WindowState == FormWindowState.Minimized ) 
     this.Text "Some uber-awesome title.";
     else if(this.WindowState == FormWindowState.Normal || this.WindowState == FormWindowState.Maximized)
     {
      this.Text = String.Empty; // Or, you can use: this.Text = "";
     }
}

但是,这还不能完全解决我的问题。当表单对用户可见时,它仍然不会在任务栏中显示标题(因为标题栏的Text属性为空。

答案 1 :(得分:1)

一个可能的解决方案(它适用于我)它是覆盖CreateParams属性并设置标题显示在任务栏中:

protected override CreateParams CreateParams
{
   get
   {
      new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();

      // Extend the CreateParams property of the Button class.
      CreateParams cp = base.CreateParams;
      // Update the button Style.
      cp.Style &= ~0xC00000; //WS_CAPTION;
      cp.Caption = PRODUCT_NAME;

      return cp;
   }
}

我希望这对你有用,

莉莎

答案 2 :(得分:0)

解决方法可能是绘制自己的表单标题栏。这样您就不需要更改任务栏中显示的实际标题。

答案 3 :(得分:-1)

这个问题是关于WPF而不是Winforms,但它适用于:Set a taskbar text different from the Window title in wpf