- - PR -
MDIフォームのMenuStripについて(VB2005)
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-03-30 19:23
こんばんは。
MDIフォームのメニューについての質問です。 状況に応じてメニュー項目のEnableを制御したいと思っています。 (例えば、保存をしたら、上書き保存を有効にするなど) 子画面が最大化されていない状態では問題ないのですが、 最大化されている状態で、 CType(MenuStrip1.Items(0), ToolStripMenuItem).DropDownItems(1).Enabled = True のようなコードで制御しようとすると、 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」 とのエラーになってしまいます。 最大化されている状態(子画面の状態に関係なく)でもエラーにならないようにするには、どうすればよいのでしょうか。 (どうして最大化されている状態だとエラーになってしまうのでしょうか) 説明が下手ですみません。 よろしくお願いします。 | ||||||||
|
投稿日時: 2007-03-30 22:46
本題ではないですが、メモ帳などは、 保存しなくても「上書き保存」のメニューは使用可能で、 「名前を付けて保存」と同じ動作をしますよね。
NullReferenceException のようですから、 コードのどの部分で、どのオブジェクトが null になっているのかを まずデバッガで確認してみてはどうですか? その上で例外発生部分のコードを提示して、 質問したほうが回答をもらいやすいと思います。 | ||||||||
|
投稿日時: 2007-03-31 19:51
こんばんは。
質問が下手ですみません。 MDIで作るのは初めてで、MDIでMenuStripがどのようになるのかもわかっていませんでした。 いろいろ調べて、少しわかってきたのですが、 また、どうすればよいのかわからず、困ってしまっています。 親画面のMenuStripに「新規作成」と「開く」のメニューを作って、子画面でもその二つを作り、MergeAction.Replaceで置き換えようとしているのですが、 デザイン画面でメニュー項目を追加していくと、二つ目を追加した際に、先に作った一つ目が消えてしまいます。 MergeAction.Replaceにしていない項目は、消えることがありません。 デザイナーのコードを見ると、 Friend WithEvents file_open As System.Windows.Forms.ToolStripMenuItem はあるのですが、 Me.file_open = New System.Windows.Forms.ToolStripMenuItem が消えてしまっています。 何度やってもこうなってしまいます。 また下手な質問の仕方になってしまってすみません。 どうしてこうなってしまうのでしょうか。 | ||||||||
|
投稿日時: 2007-03-31 21:46
同じVS2005 VBで試してみましたが、その現象は確認できませんでした。 1からフォームを作り直してやってみても同じことになりますか? 既に参考にされているかもしれませんが、 方法 : MDI ドロップダウン メニューに MenuStrip を挿入する (Windows フォーム) | ||||||||
|
投稿日時: 2007-03-31 21:48
追記です。
メニュー各項目のアイコンを無くしたら、 消えなくなりました。 再度アイコンを付けたら、 またメニューが消えて、でも今度はデザイナにはコードがちゃんと残っていて・・・。 そして今は、正常になってます。 何だか、MenuStripを触ると「不安定」になるといった状態です・・・。 | ||||||||
|
投稿日時: 2007-03-31 21:54
ありがとうございます。
丁度入れ違いの書き込みで・・・。 他にもDOBON.NETさんのページを参考にしたりとかしているのですが・・・。 >1からフォームを作り直してやってみても同じことになりますか? そうしてみます。 一応今は正常なのですが、このまま進めて、 後になってまた異常がでたら困りますし。 |
1