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、またはこれが適用されるフォーム)のTextプロパティをクリアし、MinimizeまたはHide()イベントがトリガーされたら、Textプロパティを変更してタイトルを表示します。したがって、フォームが非表示または最小化されている場合、タイトルバーは表示されませんが、タスクバーにキャプションは表示されます。そして、フォームが後で最大化されたとき、または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 = "";
     }
}

しかし、これはまだ私の問題を完全には解決していません。フォームがユーザーに表示されている場合でも、タスクバーにタイトルは表示されません(タイトルバーのTextプロパティが空であるため)。

于 2011-03-09T12:47:49.073 に答える
0

回避策は、独自のフォームタイトルバーを描画することです。そうすれば、タスクバーに表示される実際のタイトルを変更する必要がなくなります。

于 2011-03-09T12:21:19.753 に答える
-1

この質問は、WinformsではなくWPFに関するものですが、該当します。wpfのウィンドウタイトルとは異なるタスクバーテキストを設定します。

于 2011-03-09T12:14:31.207 に答える