- PR -

MDI親フォームのステータスバーへの表示について

1
投稿者投稿内容
s_saku
会議室デビュー日: 2006/05/30
投稿数: 14
投稿日時: 2007-03-07 15:58
お世話になります。

C#でMDIフォームのWindowsアプリケーションを作成しています。

子フォームで重い処理を行っているとき、親フォーム下部のステータスバーに
処理中のメッセージを表示しようとしているのですが、どのようにしたらよいのでしょうか?
子フォームで処理を開始する前に、テキストを設定し、処理の終了時にテキストをクリアすればよいのではないかと思ったのですが・・・
どのようにしたらいいのか見当がつきません。

ご存知の方、ご教示ください。
よろしくお願いいたします。
イシバシ
常連さん
会議室デビュー日: 2007/02/06
投稿数: 20
お住まい・勤務地: 浦安の隣
投稿日時: 2007-03-07 16:57
1.MDIフォームのToolStripLabelコントロールのModifiersプロパティをPrivateより大きいのにして、子フォームから直接textプロパティに値をセットする。

2.子フォームにToolStripLabel型のプロパティを実装し、MDIから子フォームのインスタンス作成時に自身のToolStripLabelコントロールを設定。
子フォームはプライベートメンバに受け取ってるのでやりたい放題。

パっと思いつくのはこんな感じですが、もっとカッコイイ方法がありそうですね。

[ メッセージ編集済み 編集者: イシバシ 編集日時 2007-03-07 17:00 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-07 17:16
3. MDI 親フォームにステータス バーに文字を設定するための公開されたメソッドを追加する。
  表示したい文字列などは、そのメソッドの引数で受け取る。
  これにより、MDI 親フォームのインスタンスが自発的にステータスバーに値を設定させることができる。
  設定後は、ただちに再描画をかけ表示する。
  子フォームの処理が終わったら、同様の手口でクリアする。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
s_saku
会議室デビュー日: 2006/05/30
投稿数: 14
投稿日時: 2007-03-07 17:43
イシバシさん、じゃんぬねっとさん、ご返事ありがとうございます。

じゃんぬねっとさんのご返事のように、親フォームにメソッドを追加してみました。
が、親フォームのインスタンスを子フォームにどのように渡してやればいいのでしょうか?
・子フォームにフォームのプロパティを作成
・親フォームで子フォームのインスタンス作成時に、このプロパティに親ホームのインスタンスを渡す。
で、いいのでしょうか?
子フォームに渡すときは「this」を渡せばいいのでしょうか?

初歩的な質問で申し訳ありません。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-03-07 17:51
ヒント:Form.MdiParent プロパティ
s_saku
会議室デビュー日: 2006/05/30
投稿数: 14
投稿日時: 2007-03-07 18:33
ぽぴ王子さん、ご返事ありがとうございます。

MdiParentにthisって入れてますね。たしかに。

で、親フォームのメソッドを使用するときは

MdiParent.メソッド(引数);

とすればいいのでしょうか?
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-03-07 19:09
引用:

s_sakuさんの書き込み (2007-03-07 18:33) より:

で、親フォームのメソッドを使用するときは

MdiParent.メソッド(引数);

とすればいいのでしょうか?


メソッドは親フォーム(便宜上そう呼んでしまいますが)に定義したメソッド
なので、親フォームしか知りません。

MdiParent プロパティの型が Form クラスなのはリファレンスを見るとわ
かると思います。で、たぶん親フォームを含むすべてのフォームは
System.Windows.Forms.Form クラスを継承して作られていると思う
のです。
ということは、親フォームのクラスにキャスト可能だということですね。
親フォームが Form1 だったとして、子フォーム(this)から

コード:

    Form1 parentForm = (Form1)this.MdiParent;
    parentForm.メソッド(引数);


という感じで呼び出せばよろしいかと思います。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
s_saku
会議室デビュー日: 2006/05/30
投稿数: 14
投稿日時: 2007-03-08 08:43
ぽぴ王子さん、ありがとうございます。

表示させることができるようになりました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)