メニューバーを再描画させるには?

解決


カサッカ  2005-01-11 14:56:48  No: 118752  IP: [192.*.*.*]

はじめまして。
VB.NET2003にて開発をしています。

現在、メニューバーにファイルを表示させるプログラムを
作成しています。

流れとしては、起動時にあるフォルダの中にあるファイルを
表示させています。
ですが、起動中にファイルエクスプローラ等でファイルを追加・
削除をした場合、そのメニューバーを押しても内容が更新され
ません。

そこで、起動中でにファイルを追加・削除をしてもメニューバーの
のメニューを押せば内容を更新させたいのですが、どのように
すればよろしいでしょうか?

よろしくお願いします。

編集 削除
特攻隊長まるるう  2005-01-11 15:36:41  No: 118753  IP: [192.*.*.*]

>流れとしては、起動時にあるフォルダの中にあるファイルを
>表示させています。
同じような処理をもう一回走らせれば?

編集 削除
カサッカ  2005-01-11 17:11:40  No: 118754  IP: [192.*.*.*]

特攻隊長まるるうさん、ありがとうございます。

>同じような処理をもう一回走らせれば?
そう思い、メニューのクリックに引っ掛けたのですが、
初回のクリックのみにファイルの内容が入り、後は何度
押しても内容が更新されませんでした。

編集 削除
特攻隊長まるるう  2005-01-11 17:21:59  No: 118755  IP: [192.*.*.*]

…何を訊きたいのでしょうか???
カサッカさんのコーディングを想像で当てられるか
試してるの???付き合ってる暇はありませんので
自分でちゃんとデバッグして下さい(^^;)

編集 削除
カサッカ  2005-01-11 18:07:33  No: 118756  IP: [192.*.*.*]

>同じような処理をもう一回走らせれば?
と、お答えいただいたので、それに対して返答いたした
だけですが…^^;

Private Sub MenuItem16_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles MenuItem16.Click

の中に、Load時と同じようなソースを貼り付けています。
ファイルをメニューに追加するソースは以下の通りです。
Dim MenuList As New MyMenuItem
MenuList.FullPath = "C:\test\"
MenuCreate(MenuList)
MenuItem16.MenuItems.Add(MenuList)

これにより、C:\test\以下のファイルをメニューバーのMenuItem16に
追加しています。
ですが、上記の方法だと、一度目のクリックの時しかAddされす、
2回目以降は効きませんので、MenuItem16を押すたびに内容をちゃんと
更新してくれません。

編集 削除
特攻隊長まるるう  2005-01-11 18:37:34  No: 118757  IP: [192.*.*.*]

ああ、なるほど。メニューアイテム自身の下にメニューアイテムが
存在した時点でクリックイベントが起こらなくなる仕様についてね。
…でもそうじゃないと今度は下層のメニューアイテムを選択できなく
なりますからねぇ。クリックイベントとの相性が悪いですねぇ。

イベントが起こってないのだから関数を呼び出してない…従って更新
されない…当然の事について質問されても…。そーゆー仕様ですとしか。
文句はマイクロソフトに直接言って下さい。

クリックイベント以外のイベントで実装しては?。
ちょっと試した限りでは Select イベントでできました。

編集 削除
カサッカ  2005-01-11 20:59:09  No: 118758  IP: [192.*.*.*]

そういう仕様とは知りませんでした…
なるほど、選択した時という事でClickに固執しておりました^^;

特攻隊長まるるうさん、大きなヒントを与えて頂き
ありがとうございましたm(_ _)m

編集 削除
特攻隊長まるるう  2005-01-12 08:51:09  No: 118759  IP: [192.*.*.*]

>そういう仕様とは知りませんでした…
ヘルプに書いてあります。
[MenuItem.Click イベント]MSDNオンラインヘルプ
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsmenuitemclassclicktopic.asp
>メモ    MenuItem の MenuItems プロパティに項目が
>含まれている場合は、このイベントは発生しません。
>このイベントは、親メニュー項目に対しては発生しません。
コントロールは全ての仕様を確認してから使え…とまでは
言いませんが(でも本来はそのくらいの事はするものですが)、
デバッグして確実に自分の思い込みと動きが違う場合、ヘルプ
で仕様を確認するのは他人の作ったプログラムを利用する
上で常識だと思いますが…。

編集 削除