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で質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
C#で別のFormへ複数の値を返そうとしているのですがうまくいきません
その他(プログラミング・Web制作)
-
C# ログイン画面からメイン画面への画面遷移について
C言語・C++・C#
-
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
-
4
C# 別なフォームへ値を渡す (初心者です)
その他(プログラミング・Web制作)
-
5
データベースのデータをTextBoxに入力された値で検索しDataGridViewに表示する方法
Visual Basic(VBA)
-
6
C# アプリ終了時に設定を記憶し、起動時に呼び出す
Visual Basic(VBA)
-
7
visualstudio C# テキストボックスの数値を取得して計算する方法を教えてください。
Microsoft ASP
-
8
c#でTextBoxの入力制限
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DTOとEntityの差は何ですか。
-
excel access連携 このテーブル...
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
json_encodeが表示しない
-
Excel2016やWord2016のリボンの...
-
GridViewからチェックボックス...
-
WordでExcelデータを差込...
-
MSFlexGridのデータを初期化し...
-
ActiveReportのサブレポート機...
-
システムを作る時に、画面上に...
-
C言語で地図を描きたい
-
回線速度が64kbpsだったら、64k...
-
「外部データの取り込み」とい...
-
VBA内でのGetPixelを使用した時...
-
Excelピポットテーブルでの表示...
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
「取得先」という表現について
-
ファイル名に日付の挿入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
wordの差し込み印刷で文字...
-
DTOとEntityの差は何ですか。
-
【C#】DataGridViewの最大列数...
-
excel access連携 このテーブル...
-
WordでExcelデータを差込...
-
GridViewからチェックボックス...
-
VBA内でのGetPixelを使用した時...
-
ActiveReportのサブレポート機...
-
MSFlexGridのデータを初期化し...
-
Windowsのマクロプログラムで、...
-
C#でのForm間のデータ受け渡し...
-
「外部データの取り込み」とい...
-
★お手上げ状態です。助けてくだ...
-
VB.NET 2017の勉強中です。 今...
-
EXCEL VBAでのCSV出力について
-
C言語で地図を描きたい
-
VB6でDBからクリップボード経由...
-
エクセルVBAで楽天証券に注...
-
INIファイルに一括書き込みを行...
-
OleDbDataReaderで単精度浮動小...
おすすめ情報