
C#でシステム作成をしています。WindowsFormApplicationです。
どのようなシステムかと申しますと、学習システムです。
親フォームForm1には、問題ページForm2へ行くボタン、保存ボタン、開くボタンが配置されています。
問題ページForm2へ行くと、数十個の数字labelがあり、この各labelから実際の問題へ、つまり、Form3、Form4、…と行きます。
さらにForm3、Form4、…の各問題を終える度に、Form3、Form4…からその都度別Forms(集計のsとしておきます。)を開いて集計していきます。(数値を扱うので。)
Form1からForm2は同時表示、Form2のlabelからのForm3、4…はForm2をHideして表示(Hideについては後述)、Form3、4…からFormsは、もちろん3、4を参照しながら集計するので同時表示です。
Form2のHideについては、例えばForm3の問題を解き、Formsを開いて集計したなら、Form3をCloseすると、Form2を再度ShowしてForm3へのlabelのForeColorを変化させます。同時にFormsはHideします。(また次のForm4で使うため。)変色labelを再度押すと、「解答済みです」とMessageBoxに表示して行けなくなります。
このように進めていくタイプのシステムを作成しています。
以上まではうまくいきました。
ここからが問題です。
Form2のlabelの色は、Form2を閉じない限りはもちろん保持されます。しかし、閉じて再度Form1から表示すると色が保持されているプログラムを書きたいのですが、どのようにすればいいでしょうか?
ちなみにHideではだめだと思います。なぜなら、初めてこのシステムに取り掛かる際、Form1からForm2を表示する時に、HideされたForm2はまだ存在しないからです。
だからデータの受け渡し、つまり、Form2を閉じる時にForm1へデータを渡し、再度開く際にForm2へそのデータを返す、というイメージですかね。
インターネット上では、テキストボックスのテキストデータの例ばかりでしっくりきません。
渡すとしてもForm1のどこに渡すのか(どこにプログラムを?)も分かりません。
Form2から受け取る際は、Loadイベントでしょう。Form2から渡す際はClosedイベントで渡すとは思いますが…。
そしてあと一つ、Form1の保存ボタン、開くボタンのプログラムです。
学習システムで少しずつ進めていくプログラムですから、この日はここまで、と保存していく必要があります。
それを開く意味で、開くボタンも付けています。
このプログラムも難しくて分からないところですが、これも質問すると質問が多くなるため置いておきます。(というより先述の受け渡しのプログラムの質問が優先です。)
質問は、このシステムのForm1から保存することで、きちんと進度は保存されるかということです。
ある日、あるところまで問題を解き(labelの色を変え)、集計し終えたとします。
そして保存して、別の日に開くとForm1が現れます。
このForm1からForm2へ行くと、ちゃんと色が保持されたプログラムは書けるでしょうか?
(ちゃんとデータの受け渡しプログラムを書いたと想定。要はlabelの変色のみ保存できればいいのです。)
そしてFormsへ飛ぶと、データは保持されているでしょうか?
Formsは先述しましたが、集計し終えるとHideするのみです。つまりFormsは初めて表示したらもうCloseはしません。
このようにHideしたFormの状態も保持することはできるでしょうか?
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
同じような問題に同じ時期にハマる人がいるんですねぇ。
同じチームの人たちなのかも知れませんが。
とりあえず、データに関しては#2さんの書かれているようにクラスなりにまとめて、
フォーム間でのやりとりはプロパティ経由なり、受け渡し用のアクセスメソッド入れたり…でよいのではないですか?
最初に起動するであろうメインフォームのフィールドにデータを保持するクラス/構造体のインスタンスを持って、子フォームには親フォーム経由で受け渡し。
# カレンダーの例では面倒ですが個々のデータを送るしかないでしょう。
あるいは、親フォームの方にデータ受け渡し用のプロパティかアクセス用メソッドを用意して、子フォームからアクセスする。とかでしょうかね。
# カレンダーなら表示更新の際に表示に必要な情報を親フォームに問い合わせればいいし。それなら最大で31日分です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP+SmartyとAjax
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
Strutsで画面に表示した値の再...
-
ファイルのアップロードについて
-
excel access連携 このテーブル...
-
★お手上げ状態です。助けてくだ...
-
MSFlexGridのデータを初期化し...
-
Dosブロンプトでtabを出力したい
-
「取得先」という表現について
-
バッチファイルで、全てのウィ...
-
ウイルスもどき
-
電話番号のフォーマットについて
-
【C#】FindWindowExの使い方を...
-
開始と終了を指定して、その間...
-
PHPの名前空間インポートについて
-
[CakePHP] Paginatorのリンクが変
-
shシェルスクリプト 空白行の...
-
ブラウザの戻るボタンで重複登...
-
オブジェクトの中身の判定(PHP)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
wordの差し込み印刷で文字...
-
excel access連携 このテーブル...
-
【C#】DataGridViewの最大列数...
-
WordでExcelデータを差込...
-
DTOとEntityの差は何ですか。
-
MSFlexGridのデータを初期化し...
-
Strutsで画面に表示した値の再...
-
長い1枚ページを無限スクロール...
-
「外部データの取り込み」とい...
-
表を表示するコントロールについて
-
INIファイルに一括書き込みを行...
-
C言語で地図を描きたい
-
OleDbDataReaderで単精度浮動小...
-
GridViewからチェックボックス...
-
ASP.NET GridView の検索画面で...
-
VB webbrowserを使ってサイトの...
-
Excelデータの表示方法について
-
VBA内でのGetPixelを使用した時...
-
ActiveReportのサブレポート機...
-
アクセス+VBA 最適化
おすすめ情報