これは私がしている奇妙なことですが、タスクバーではなく、タイトルバーで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、またはこれが適用されるフォーム)の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プロパティが空であるため)。
回避策は、独自のフォームタイトルバーを描画することです。そうすれば、タスクバーに表示される実際のタイトルを変更する必要がなくなります。
この質問は、WinformsではなくWPFに関するものですが、該当します。wpfのウィンドウタイトルとは異なるタスクバーテキストを設定します。