这是我正在做的一件奇怪的事情,但是我怎样才能在任务栏中设置一个winform表单的标题,而不是在它的标题栏中?
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;
}
}
我希望这对你有用,
丽莎
好的,所以我的临时工作是这样的:
在运行时/设计时,清除窗体(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 = "";
}
}
但是,这还没有完全解决我的问题。当表单对用户可见时,它仍然不会在任务栏中显示标题(因为标题栏的文本属性为空。
一种解决方法可能是绘制您自己的表单标题栏。这样您就不需要更改任务栏中显示的实际标题。
这个问题是关于 WPF 而不是 Winforms 但它适用:Set a taskbar text different from the Window title in wpf