- PR -

ShowInTaskbarをFalseに設定した時の挙動

投稿者投稿内容
ムック
会議室デビュー日: 2004/05/24
投稿数: 5
投稿日時: 2006-01-11 14:48
WindowsフォームのShowInTaskbarプロパティをFalseに設定し、
さらにFormBorderStyleプロパティをNoneに設定した場合に
Alt+Tabにて表示されるタスク一覧にタスクが表示されてしまいます。
しかも表示されるのが「アイコンなし」のタスクです。。

この回避方法はありますでしょうか?
もしくは「アイコンあり」のタスクになる方法でも大丈夫です。

よろしくお願いします。
清華
ベテラン
会議室デビュー日: 2005/12/21
投稿数: 50
投稿日時: 2006-01-11 14:56
僕もぜひとも知りたい。

フォームの数だけ表示されるんですよね。
ちなみにVista(Shell)だとアイコンは表示されます。ですがやはり消したい。
_________________
9uiet Design - http://quietdesign.rental.allinoneserver.net/
デザインにこだわったソフトの配布とプログラミングTipsの公開(予定)をしています。
9uiet Blog - http://seiga.blog44.fc2.com/
笑ったことやプログラミングのことなど書
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-11 14:57
引用:

ムックさんの書き込み (2006-01-11 14:48) より:

表示されるのが「アイコンなし」のタスクです。。


FormBorderStyle プロパティは無関係ですね。
ShowInTaskBar のせいですね。

引用:

この回避方法はありますでしょうか?
もしくは「アイコンあり」のタスクになる方法でも大丈夫です。


ダミーのフォームにアイコンを設定し、非表示にします。
この非表示のフォームをオーナーにして、問題となっているフォームを表示してください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ムック
会議室デビュー日: 2004/05/24
投稿数: 5
投稿日時: 2006-01-11 15:17
じゃんぬねっと さん、早速のご解答ありがとうございます。

この方法は「アイコンあり」のタスクにする方法ですね。
確かにこの方法で実現することができました。ありがとうございます。
そしてちょっと豪快なやり方ですね(笑)
大事なOwnerプロパティを使わないといけないし。
他にOwnerを設定したい場合は使えないと思います。

しかし今回の私の場合はOwnerプロパティは使用していなかったので、
これで問題は解決しました。
ですが私の他にも清華 さんのようにやはり「タスクを表示しない方法」を知りたい人がいると思います。
ですので、引き続きご意見を伺いたいと思います。

引用:

FormBorderStyle プロパティは無関係ですね。
ShowInTaskBar のせいですね。


そうなんでしょうか?
FormBorderStyleプロパティをSizableToolWindowなどに設定すると
Alt+Tabから消えるのですが。。

[ メッセージ編集済み 編集者: ムック 編集日時 2006-01-11 15:30 ]

[ メッセージ編集済み 編集者: ムック 編集日時 2006-01-11 15:31 ]
清華
ベテラン
会議室デビュー日: 2005/12/21
投稿数: 50
投稿日時: 2006-01-11 15:17
Vista Shell使ってるとうまくいきませんね。XPでちゃんとなるかは分かりません。

その前にフォームのロード時に非表示ってどうすればいいのでしょうか?Loadイベント後にShowが呼ばれてしまうんで。やっぱり違うクラスから呼び出してやるしかないんでしょうか?フォームもう一個用意するかめんどくさいけどApplicationContext使うか…
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtsksettingformtobeinvisibleatitsinception.asp

仕方が無いからクリックしたら消すようにしたコード
コード:
private void Form1_Load(object sender, System.EventArgs e)
{
	for(int i=0;i<10;i++)
	{
		Form2 f = new Form2();
		f.Owner = this;
		f.Show();
	}
}

private void Form1_Click(object sender, System.EventArgs e)
{
	this.Hide();
}



上記のコードをVista Shellで動かした場合意味がありませんでした。
_________________
9uiet Design - http://quietdesign.rental.allinoneserver.net/
デザインにこだわったソフトの配布とプログラミングTipsの公開(予定)をしています。
9uiet Blog - http://seiga.blog44.fc2.com/
笑ったことやプログラミングのことなど書
清華
ベテラン
会議室デビュー日: 2005/12/21
投稿数: 50
投稿日時: 2006-01-11 15:19
あぁ、これはアイコンを表示する方法だったのか……

内容的に見て消す方法に見えたんですが、早とちりしてしまい申し訳ない。
_________________
9uiet Design - http://quietdesign.rental.allinoneserver.net/
デザインにこだわったソフトの配布とプログラミングTipsの公開(予定)をしています。
9uiet Blog - http://seiga.blog44.fc2.com/
笑ったことやプログラミングのことなど書
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-11 15:28
引用:

ムックさんの書き込み (2006-01-11 15:17) より:

この方法は「アイコンあり」のタスクにする方法ですね。


消すのは難しいと思います... (;_ _)/
この方法はダミーをインスタンス化して増殖しアイコンさえ設定し直せば、いくつでも可能です。

引用:

そしてちょっと豪快なやり方ですね(笑)
大事なOwnerプロパティを使わないといけないし。
他にOwnerを設定したい場合は使えないと思います。


他に Owner を設定する場合はオーナーフォームのアイコンになるだけです。
オーナーのアイコンにしたくない場合は、さらにオーナーをダミーで持つことで回避できます。
ある業務で「すり替え専用のコンテナ」を実装した経験があります。(T-T;)

引用:

そうなんでしょうか?
FormBorderStyleプロパティをSizableToolWindowなどに設定すると
Alt+Tabから消えるのですが。。


申し訳ありません、最初の書き込みで、

引用:

WindowsフォームのShowInTaskbarプロパティをFalseに設定し、
さらにFormBorderStyleプロパティをNoneに設定した場合に


とあったものですから、てっきり None も再現条件かと思っておりました。(^^;)

引用:

PS.引用の方法が分かりませんでした。。


BBコードの使用 を参照してください。(^^)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
清華
ベテラン
会議室デビュー日: 2005/12/21
投稿数: 50
投稿日時: 2006-01-11 15:33
ぬぬ・・・タブ型ランチャhttp://quietdesign.rental.allinoneserver.net/download/deskshelf/index.html
作ってるんですが、タブの数だけずらずらと…(苦笑。

ん〜消すか一個にまとめるかできればいいのですがねぇ…難しいだろうと思って質問
は控えていたのですが、便乗で質問させてもらいました(笑。

ダミーを持つって言うのは綺麗じゃないですね、インスタンスかした文だけメモリ食いますし…

スキルアップ/キャリアアップ(JOB@IT)