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

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

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

Re[3]: MDI子フォームからMDI親フォームの操作


(過去ログ 111 を表示中)

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

■65935 / inTopicNo.1)  MDI子フォームからMDI親フォームの操作
  
□投稿者/ 中学3年A (2回)-(2013/03/25(Mon) 14:55:14)

分類:[.NET 全般] 

開発環境:Vista
使用言語:Visual Studio Express 2008
MDI子フォームからMDI親フォームのMenuStripのToolStripMenuItemを
操作する方法をご教授ください。
例えば以下のような事です。

子フォーム名;Form1

private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
{
//MDI親フォームのMenuStripのToolStripMenuItem(mnuFileClose)
================================
mnuFileClose.Enabled = false;//エラー
上記の操作を可能にする方法を教えてください。
=================================
}
引用返信 編集キー/
■65937 / inTopicNo.2)  Re[1]: MDI子フォームからMDI親フォームの操作
□投稿者/ howling (263回)-(2013/03/25(Mon) 15:13:43)
No65935 (中学3年A さん) に返信
こんにちわ。
質問する際には、エラー内容を必ず書くようにしてください。
今回、どのようなエラーが出たのか知りません。その上で書きます。
(多分protectedな値に触れてるだけなんじゃ?そもそもインスタンス渡してないとかだったら問題外)

親フォームの何かを子フォーム側で変更したい場合、やり方自体は3つほど思いつきました。

1.子フォーム作成時に、親フォームが自分自身を渡してやることで、子フォームから直接親フォームのpublicな何かにアタッチする
2.子フォーム作成時に、子フォームが変更したい親フォームの何か(今回だとMenuStripのToolStripMenuItemになるのかな?)を渡してやることで、
  その何かのpublic指定の物にアタッチする
3.子フォーム側が変更したい親フォームの何かがある場合に、親フォーム側でその通知のみを受け取るメソッドまたはイベントを用意し、
  親フォームは通知を受け取ったら自分自身の何かを更新する

個人的には3をオススメしておきます。
親フォームが自分の何かをいじられるのに、それを自分の知らないところで行われることは設計としておかしいと思うからです。
ただ、そうやって変更する部分があまりにも多い場合は、コードが煩雑になりそうなので、設計をやり直すか、1の方法あたりを採るかな、と思います。
状況に応じて選択してください。
引用返信 編集キー/
■65948 / inTopicNo.3)  Re[2]: MDI子フォームからMDI親フォームの操作
□投稿者/ 中学3年A (3回)-(2013/03/26(Tue) 14:51:11)
以下の様な方法(3)で解決できました。
どうも有難うございました。
frmDataTable newMDIChild = new frmDataTable();
newMDIChild.MdiParent = this;
newMDIChild.Show();

newMDIChild.FormClosing += new System.Windows.Forms.FormClosingEventHandler(newMDIChild_FormClosing);

private void newMDIChild_FormClosing(object sender, FormClosingEventArgs e)
{
//処理
}
解決済み
引用返信 編集キー/
■65963 / inTopicNo.4)  Re[3]: MDI子フォームからMDI親フォームの操作
□投稿者/ howling (269回)-(2013/03/27(Wed) 12:24:26)
No65948 (中学3年A さん) に返信
> 以下の様な方法(3)で解決できました。

3だけど、MdiParentで渡しているから3のような謎な感じですね。まぁいいかな…
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -