C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: タスクバーのクリックについて


(過去ログ 19 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■7967 / inTopicNo.1)  タスクバーのクリックについて
  
□投稿者/ やっくん (4回)-(2007/09/20(Thu) 17:28:06)

分類:[.NET 全般] 

先日はお助け頂き、どうも有難う御座いました。

FormBorderStyle.Noneでフォームの枠線を表示しないようにしている場合、
タスクバーに表示されるフォームに対するクリックが無効になってしまい、
右クリックで表示される「最大化」や「閉じる」といったメニューが表示されません。
また、左クリックによる最小化も起こりません。(最小化から戻すことだけはできるようですが)

タスクトレイであれば簡単に弄れるのですが、
タスクスイッチの部分を弄ることは出来ないでしょうか。
(FormBorderStyle.None以外の設定の時と同じように出来れば満足です)
せめて、左クリックで「最小化」と「通常表示」を切り替えられるようにしたいのですが・・・。

以下のページで紹介されているITaskbarListを用いれば出来るのかな、と思ったのですが、
初心者故に使い方がよく分かりません;
http://www.runan.net/program/tips/_interface/ITaskbarList.shtml

ご教授頂ければ幸いです。宜しくお願い致します。
開発環境:VS2005、言語:C#、初心者
引用返信 編集キー/
■7977 / inTopicNo.2)  Re[1]: タスクバーのクリックについて
□投稿者/ 魔界の仮面弁士 (431回)-(2007/09/20(Thu) 19:00:30)
No7967 (やっくん さん) に返信
> FormBorderStyle.Noneでフォームの枠線を表示しないようにしている場合、
> タスクバーに表示されるフォームに対するクリックが無効になってしまい、
> 右クリックで表示される「最大化」や「閉じる」といったメニューが表示されません。
> また、左クリックによる最小化も起こりません。(最小化から戻すことだけはできるようですが)

FormBorderStyle を None にするのではなく、リージョンを切る形で実装してみるとか。

private void Form1_Load(object sender, EventArgs e)
{
 Point p = PointToClient(Location);
 Rectangle r = ClientRectangle;
 r.Offset(-p.X, -p.Y);
 Region = new Region(r);
}
引用返信 編集キー/
■7981 / inTopicNo.3)  Re[2]: タスクバーのクリックについて
□投稿者/ やっくん (5回)-(2007/09/20(Thu) 19:33:55)
No7977 (魔界の仮面弁士 さん) に返信
> FormBorderStyle を None にするのではなく、リージョンを切る形で実装してみるとか。

どうも有難う御座いますっっ。こんな方法があったんですね。
1日中悩んでいたのに、一瞬で解決してしまいました。

ただ、最大化すると上部のタイトルバーの部分が空いてしまうようなのですが、
これはどうしたら良いでしょうか;
引用返信 編集キー/
■7985 / inTopicNo.4)  Re[3]: タスクバーのクリックについて
□投稿者/ 魔界の仮面弁士 (432回)-(2007/09/20(Thu) 21:06:30)
No7981 (やっくん さん) に返信
> ただ、最大化すると上部のタイトルバーの部分が空いてしまうようなのですが、

どうせ枠無しなのですし、
 MaximizeBox = false;
で良いのでは?
引用返信 編集キー/
■7986 / inTopicNo.5)  Re[4]: タスクバーのクリックについて
□投稿者/ やっくん (6回)-(2007/09/20(Thu) 21:19:06)
No7985 (魔界の仮面弁士 さん) に返信
> どうせ枠無しなのですし、
>  MaximizeBox = false;
> で良いのでは?

枠無しなのはデザインに拘りたかったからでして、枠のようなものは自作しているんです。
機能面上、最大化および全画面表示(こちらはNoneに切り替えれば良いんですが)は必須なんですよね・・・。
引用返信 編集キー/
■7988 / inTopicNo.6)  Re[5]: タスクバーのクリックについて
□投稿者/ こうへい (3回)-(2007/09/20(Thu) 22:21:50)
最大化を自作してはいかがでしょうか?

リージョンで切った分を広げたサイズを指定する
タイトルバーを切ったんだとすると

this.Location = new Point(
  SystemInformation.WorkingArea.Location.X,
  SystemInformation.WorkingArea.Location.Y - SystemInformation.CaptionHeight);
this.Size = new Size(
  SystemInformation.WorkingArea.Size.Width,
  SystemInformation.WorkingArea.Size.Height + SystemInformation.CaptionHeight);

超適当ですがこんな感じでどうでしょうか?

引用返信 編集キー/
■7995 / inTopicNo.7)  Re[6]: タスクバーのクリックについて
□投稿者/ やっくん (7回)-(2007/09/20(Thu) 23:14:39)
No7988 (こうへい さん) に返信
> 最大化を自作してはいかがでしょうか?

有難う御座います。
フォームは、スクリーンより大きくすることができないので駄目ですね・・・。
(タスクバーを常に表示しているのならば大丈夫なのですが;)

ただ、何故か少しだけ(12pxまで?)なら大きくなるみたいで、横幅については隙間ができません。
引用返信 編集キー/
■8001 / inTopicNo.8)  Re[7]: タスクバーのクリックについて
□投稿者/ Ruku (2回)-(2007/09/21(Fri) 02:48:50)
> フォームは、スクリーンより大きくすることができないので駄目ですね・・・。

.NET Framework 2.0 以降であれば、Form の MaximumSize プロパティを指定すれば、より大きなサイズにできたと思います。
SystemInformation クラスから取得できる値を使って、ちょっと大きめに設定すれば良いかと。

# .NET Framework 1.1 以前の場合は Win32API や WndProc の override で対応できたような。

Form の MaximizedBounds プロパティで最大化時の位置とサイズを指定できたよなぁ… と思って試してみましたが、何だか上手くいきませんでした。
この辺りはあまり詳しくないので、何かごにょごにょすれば出来るかもしれません。

解決法ではありませんが、参考になれば。
引用返信 編集キー/
■8018 / inTopicNo.9)  Re[7]: タスクバーのクリックについて
□投稿者/ 渋木宏明(ひどり) (372回)-(2007/09/21(Fri) 11:33:34)
渋木宏明(ひどり) さんの Web サイト
Windows Live Messanger は、最大化した時は標準のタイトルバーを表示してますね。
WndProc をオーバーライドして、とか面倒なことをしたくないなら、たぶんこれがイチバン簡単な解決策だと思います。


引用返信 編集キー/
■8071 / inTopicNo.10)  Re[8]: タスクバーのクリックについて
□投稿者/ やっくん (8回)-(2007/09/21(Fri) 21:12:02)
No8001 (Ruku さん) に返信
> MaximumSize プロパティを指定すれば、より大きなサイズにできたと思います。

有難う御座いますっ。大きくできたんですね; ほんと無知で申し訳御座いません。
MaximizedBoundsと合わせて、何とか最大化できるようになりました。

this.MaximumSize = new Size(
  Screen.PrimaryScreen.Bounds.Width + rectangle.X * 2,
  Screen.PrimaryScreen.Bounds.Height + rectangle.Y + rectangle.X);
this.MaximizedBounds = new Rectangle(
  -rectangle.X, -rectangle.Y, this.MaximumSize.Width, this.MaximumSize.Height);

これではタスクバーが表示してあると重なってしまうわけですが、
WorkingAreaを使ってタスクバーの部分を削ると、何故か勝手に再び上部に空白ができてしまいます。
まぁこれは仕方ないと思って、諦めることにしました。

現在、
このままでは、自動で隠す設定にしいているタスクバーが全く表示されなくなってしまうのと、
フルスクリーン表示との両立について悩んでいるところですが、
何度もお聞きすのは申し訳ないので、とりあえず自力で解決策を探してみたいと思います。

皆様、本当に有難う御座いました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -