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

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

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

Re[2]: ツールストリップメニューのVisible=Falseの時


(過去ログ 106 を表示中)

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

■63466 / inTopicNo.1)  ツールストリップメニューのVisible=Falseの時
  
□投稿者/ たま (4回)-(2012/08/29(Wed) 12:08:05)

分類:[VB.NET/VB2005 以降] 

いつもお世話になっております。
VB2008で、メニューバー(MenuStrip)を利用しています。
親メニュー(ここでは「メニュー1」します)に、以下のような表示がなされているToolStripMenuItemがぶら下がっているとします。

メニュー1
  └"○○を開く"
  └"△△と□□の再計算"
  └"××の終了"

ただ、条件によっては、2番目の"△△と□□の再計算"というメニューを非表示にしたいため、このToolStripMenuItemのVisibleをFalseに設定するのですが、
メニュー1をポップアップした時、表示されるメニューの幅が、└"△△と□□の再計算"のメニューが表示されている時と同じ幅になってしまい、
表示される1番目のメニュー"○○を開く"と3番目のメニュー"××の終了"の右側のスペースが空きすぎて、あまり見た目がよくありません。
非表示にしたいToolStripMenuItemをメニュー1からRemoveし、必要な時にこのToolStripMenuItemをInsertすればこの問題は発生しないのですが、
非表示にしたいToolStripMenuItemが複数ある場合には、Removeの後でInsertする際にどの位置に挿入すればいいのか、わけが分からなくなりそうです。

そこで、Visible=FalseのToolStripMenuItemの幅に関係なく、表示されるToolStripMenuItemの幅でメニューの幅を設定する方法を知りたいのですが、
どうすればよいでしょうか?



引用返信 編集キー/
■63467 / inTopicNo.2)  Re[1]: ツールストリップメニューのVisible=Falseの時
□投稿者/ Azulean (24回)-(2012/08/29(Wed) 12:48:48)
ご意向に沿いかねる発言となってしまって恐縮ですが、Visibleで制御することはおすすめできません。
幅もそうですし、キーボードの上下キーを押したときの挙動も大変残念なことになります。
(メニューがスクロールしてしまう問題は既知の不具合ですが、かなり長いこと修正しないとされている)

相当に頑張らないといけない割に、見返りが少ないので外側から追加、挿入、削除を支援するクラスを作ってはどうかと考えています。
引用返信 編集キー/
■63468 / inTopicNo.3)  Re[1]: ツールストリップメニューのVisible=Falseの時
□投稿者/ shu (50回)-(2012/08/29(Wed) 16:06:44)
No63466 (たま さん) に返信

非表示メニューのTextを空文字列にすれば幅が狭くなります。
表示、非表示の切り替えがあるようならTagにでもTextの内容を退避して非表示時に
Textを消し、表示時に戻すようにするのはどうでしょう?
引用返信 編集キー/
■63471 / inTopicNo.4)  Re[2]: ツールストリップメニューのVisible=Falseの時
□投稿者/ たま (5回)-(2012/08/30(Thu) 11:30:53)
Azuleanさま、shuさま、ありがとうございます。
Azuleanさまの仰る、「大変残念な」挙動、確認しました。
確かに、これでは、Visible=Falseにするのは避けるべきですね。
やはり、Removeを行う方向で検討しようと思います。

先日もToolStripMenuItemのEnabledの件で投稿させて頂きましたが、ToolStripMenuItemは不具合が多いですね。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -