Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任务栏中的应用程序标题,但不是标题栏_C#_.net_Winforms_Titlebar - Fatal编程技术网

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

C# 任务栏中的应用程序标题,但不是标题栏,c#,.net,winforms,titlebar,C#,.net,Winforms,Titlebar,这是我正在做的一件奇怪的事情,但是我如何才能在任务栏中设置winform表单的标题,而不是在其标题栏中设置呢?这个问题是关于WPF而不是Winforms的,但它是适用的:一个解决方法可以是绘制您自己的表单标题栏。这样,您就不需要更改任务栏中显示的实际标题。好的,所以我的临时解决方法是: 在运行时/设计时,清除表单的Text属性(Form1,或此应用于的任何表单),并在触发Minimize或Hide()事件时,更改Text属性以显示标题。因此,当窗体被隐藏或最小化时,您将无法看到标题栏,但您将能够

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

这个问题是关于WPF而不是Winforms的,但它是适用的:

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

好的,所以我的临时解决方法是:

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

我不知道这是否是微软采取的方法

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

如果使用的是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属性为空)。

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


Lisa

只是出于好奇,你为什么要这样做?为什么是nic Lucifer?人们希望被称为地狱真是太神奇了。@Unmesh Kondolikar;我这样做是为了在表单的标题栏上自定义绘图,但我仍然希望标题显示在任务栏上。他们不是在地狱里教这种恶作剧吗?[=@Lucifer,我不认为你想下地狱。我只是希望你能见到造物主本人,并向他询问你的问题。等等,你可以!嗯,很有趣。如果我找不到更简单的解决方案,我会尝试一下(我不太擅长绘画部分,尤其是当涉及空气玻璃的时候)-谢谢你的回答,我会记住:)我刚看到你的网站:),你为澳大利亚提供开发/设计服务吗?还是这只是当地的事情?@Lucifer:事实上是的[=我的大多数客户来自世界各地,我也有一些来自澳大利亚。啊,太棒了!我可以通过你的网站与你联系吗?:)谢谢,@Stuart Dunkeld,我现在就去看看这个链接:)