3

这是我正在做的一件奇怪的事情,但是我怎样才能在任务栏中设置一个winform表单的标题,而不是在它的标题栏中?

4

4 回答 4

4

一个可能的解决方案(它对我来说很好)是覆盖 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;
   }
}

我希望这对你有用,

丽莎

于 2016-09-20T15:33:19.130 回答
1

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

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

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

编辑:

好的,亲爱的,我有一些美味的工作代码:

如果您使用的是 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 = "";
     }
}

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

于 2011-03-09T12:47:49.073 回答
0

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

于 2011-03-09T12:21:19.753 回答
-1

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

于 2011-03-09T12:14:31.207 回答