- - PR -
「グループごと閉じる」を無効にしたい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-15 14:46
はじめまして。
タスクバー上にグループ化されたウィンドウは、「グループごと閉じる」 によって一括して閉じることができますが、これを無効にする方法がないか 調べております。 現在 VB2005 を使って Windows アプリの開発を行っております。 このアプリ、「終了するときは、必ず画面上の閉じるボタンを使うこと」 という標準仕様があります。これを実現するため、ウィンドウの×ボタン を無効にするコードを記述しました。 (@IT の下記の記事を参考にしました) http://www.atmarkit.co.jp/fdotnet/dotnettips/142closebtn/closebtn.html これにより、タスクバー上のボタンを右クリックして、閉じるを選択する こともできなくなり、要件を実現できたように見えました。 (Alt + F4 で閉じられますが、これはOK) しかし、「同様のタスクバーボタンをグループ化する」の設定を ON に した場合、「グループごと閉じる」は有効になってしまい、これによって 複数のウィンドウをいっぺんに閉じてしまうことが可能です。 この「グループごと閉じる」の機能を無効にしたいのですが、これを 実現するにはどのような方法があるのでしょうか。ControlBox = False を 試してみましたが、うまくいきませんでした。ご存知の方がいらっしゃいま したら、ご教示願いたいと思います。 | ||||||||
|
投稿日時: 2007-02-15 17:31
アプリケーション側で、閉じられる原因 (CloseReason) を見て、 特定の条件下以外キャンセルしてしまうのが最も楽な手段だと思います。 # 一応ですが、プロセス自体を落とされた場合や、ユーザビリティを考えると、 # 現状の仕様自体がお勧めできないということも申し上げておきます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-02-16 10:42
じゃんぬねっとさん、ご返答ありがとうございます。
FormClosing イベントを拾って、CloseReason の値を確認してみました。 ですが、コード上から Me.Close() を呼び出した場合と、「グループごと閉じる」 を行った場合、どちらも同じ値(UserClosing)が取れるようで、区別することが できませんでした。 > 一応ですが、プロセス自体を落とされた場合や、ユーザビリティを考えると、 > 現状の仕様自体がお勧めできないということも申し上げておきます。 これはおっしゃるとおりで、私も Windows の仕様に反抗するようなアプリは 嫌なのですが、お客様と直接交渉するような立場でもなく、その通りに作る しかないのです…。 | ||||||||
|
投稿日時: 2007-02-16 10:53
確かに CloseReason だけでは判断できないですね。 ただ、Form.Close メソッドを呼び出す場合には、何かしろ識別できるものを別途用意すれば可能ですよね。
このあたりは私も経験ありなので "一応" と書かせて頂きました。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-02-16 11:54
そうですね。アプリが許可する閉じる操作が行われたのかどうかを示す フラグ等を用意して、それで判断するような仕組みにしようかと思います。 ご助言くださいまして、ありがとうございました。 | ||||||||
|
投稿日時: 2007-02-16 22:47
経験から意見させていただくと、
「発注したお客様」と、「実際に使うお客様」が違う場合、 「発注したお客様」の勝手な思いこみが「実際に使うお客様」の希望と食い違い、 「実際に使うお客様」から非難されることになります(--;) _________________ |
1