- - PR -
MDI親フォームのステータスバーへの表示について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-03-07 15:58
お世話になります。
C#でMDIフォームのWindowsアプリケーションを作成しています。 子フォームで重い処理を行っているとき、親フォーム下部のステータスバーに 処理中のメッセージを表示しようとしているのですが、どのようにしたらよいのでしょうか? 子フォームで処理を開始する前に、テキストを設定し、処理の終了時にテキストをクリアすればよいのではないかと思ったのですが・・・ どのようにしたらいいのか見当がつきません。 ご存知の方、ご教示ください。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2007-03-07 16:57
1.MDIフォームのToolStripLabelコントロールのModifiersプロパティをPrivateより大きいのにして、子フォームから直接textプロパティに値をセットする。
2.子フォームにToolStripLabel型のプロパティを実装し、MDIから子フォームのインスタンス作成時に自身のToolStripLabelコントロールを設定。 子フォームはプライベートメンバに受け取ってるのでやりたい放題。 パっと思いつくのはこんな感じですが、もっとカッコイイ方法がありそうですね。 [ メッセージ編集済み 編集者: イシバシ 編集日時 2007-03-07 17:00 ] | ||||||||
|
投稿日時: 2007-03-07 17:16
3. MDI 親フォームにステータス バーに文字を設定するための公開されたメソッドを追加する。
表示したい文字列などは、そのメソッドの引数で受け取る。 これにより、MDI 親フォームのインスタンスが自発的にステータスバーに値を設定させることができる。 設定後は、ただちに再描画をかけ表示する。 子フォームの処理が終わったら、同様の手口でクリアする。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-03-07 17:43
イシバシさん、じゃんぬねっとさん、ご返事ありがとうございます。
じゃんぬねっとさんのご返事のように、親フォームにメソッドを追加してみました。 が、親フォームのインスタンスを子フォームにどのように渡してやればいいのでしょうか? ・子フォームにフォームのプロパティを作成 ・親フォームで子フォームのインスタンス作成時に、このプロパティに親ホームのインスタンスを渡す。 で、いいのでしょうか? 子フォームに渡すときは「this」を渡せばいいのでしょうか? 初歩的な質問で申し訳ありません。 | ||||||||
|
投稿日時: 2007-03-07 17:51
ヒント:Form.MdiParent プロパティ
| ||||||||
|
投稿日時: 2007-03-07 18:33
ぽぴ王子さん、ご返事ありがとうございます。
MdiParentにthisって入れてますね。たしかに。 で、親フォームのメソッドを使用するときは MdiParent.メソッド(引数); とすればいいのでしょうか? | ||||||||
|
投稿日時: 2007-03-07 19:09
メソッドは親フォーム(便宜上そう呼んでしまいますが)に定義したメソッド なので、親フォームしか知りません。 MdiParent プロパティの型が Form クラスなのはリファレンスを見るとわ かると思います。で、たぶん親フォームを含むすべてのフォームは System.Windows.Forms.Form クラスを継承して作られていると思う のです。 ということは、親フォームのクラスにキャスト可能だということですね。 親フォームが Form1 だったとして、子フォーム(this)から
という感じで呼び出せばよろしいかと思います。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2007-03-08 08:43
ぽぴ王子さん、ありがとうございます。
表示させることができるようになりました。 ありがとうございました。 |
1