• 締切済み

【C#】フォームの値を保存しておく自作クラスについて

Visual C# Express Editionで開発してます。 自作のダイアログボックスにタブページをつけました。 タブページを切り替えると内容が失われてしまいますが、 テキストボックスなどのコントロールに入力された値を保存しておき 後で取り出すには、 1.自作のクラスのフィールドに各コントロールのテキストプロパティが変更されたらいちいち保存する。(各コントロールのイベントに保存するコードを全部書く) 2.変更されたオブジェクトと内容を判別し、自作クラスに保存する。 たとえば、 Textbox1のTextプロパティが変更されたら、 プロパティが変更されたコントロール名、プロパティ名と値を 自作クラスに保存。 タプページの最上位を切り替える。 タプページを元にもどったら 自作クラスから変更内容を取り出し反映する。 というようなことができると思うのですが・・・ まったくわからないので、 今回はタブページに含まれるコントロール全部のTextChanged イベントにコード書きました(すごく手間でした。) みなさんはどのようにしているのでしょうか? わかる方、どうかよろしくお願いします。

みんなの回答

noname#76085
noname#76085
回答No.2

> 変更があったら変更内容だけを格納しておきたいのですが。 添付画像のように変更した内容…今回はTextBox.Textを書き換えてしまっていますが…「だけを」残しておきたい、で合っていますかね?

noname#76085
noname#76085
回答No.1

理解力不足で申し訳ないですが… > タブページを切り替えると内容が失われてしまいますが、 このタブページと言うのはTabControlのことで、よろしいのでしょうか?

spectra_00
質問者

補足

そうです。TabControlです。 なぜか書き方がひどくおかしいですね。ごめんなさい。 変更内容が失われるのじゃなくて、 ようするにUndoの機能をつけたいのです。 変更があったら変更内容だけを格納しておきたいのですが。

関連するQ&A

  • C# 別なフォームへ値を渡す (初心者です)

    メインのフォームからサブのフォームを呼び出して、 サブのフォ-ムからさらにクラスを呼び出し、 クラスからメインのテキストボックスのテキストに書き込むプログラムを作成中です。 ですが、テキストボックスがパブリックにも関わらず、表示されません。 デバックで見る限り、テキストボックスのテキストには値が入っているのですが、 フォームを見ると表示されていません。 知恵をお貸しください。

  • access2000 vba の テキストイベント取得

    access2000 vbaで、プログラムを組んでいます。 画面にテキストボックス1と、表(あるテーブルの内容をあらわしているもの)があります。 [初心者でこの表のうまい言い方がよくわかりません・・] テキストボックス1は、プロパティの、データ/コントロールソースが、あるテーブルのコードになっています。 このテキストボックス1は表のレコードを選択することにより、内容が変わります。(選択したレコードの、コード値になります。) ここで、テキストボックス1の値が変化したときに、イベントを発生したいのですが、なかなかできません。 change,afterupdateではだめでした。 うまくつたわらないかもしれませんが、手入力以外による値の変化は、テキストボックスイベント検知はできないものでしょうか。

  • フォーム上のテキストボックスの値を変更させない方法って?

    アクセス2000を使っています。 フォーム上にテキストボックスを作成して、テーブル の値を表示しています。 VBAでこのテキストボックスの値が1の時は, me!txt.enabled=true(テキストボックスが開く) 0の時は、me!txt.enabled=false(テキストボックスがグレーアウト)というようにさせたいのです。さらにこのテキストボックスの値を変更できないようにしたいのですが方法はありますか? 要は、表示だけさせたいのです。 プロパティで値ロックするとenableが利かなくなります。 よろしくお願いいたします

  • テキストコントロールの値が変わったときに知らせてくれる方法

    VB6です。 テキストコントロールに「1」を入力してそのまま処理を行いたいのですが、どこかのコードでそのテキストコントロールの値を「5」に変えているようです。 自分でコードを書いておきながら、どこで間違って変更しているのかわからなくなってしまいました。 このような場合に、該当のテキストコントロールの値が直前に変更されたその行を特定する機能はVB6にあるのでしょうか。

  • ユーザコントロールのイベント取得について(C#)

    環境:Visual Studio 2005 C# Windows Application フォームに自作のユーザコントロールを貼り付けてそのイベントを取得する勉強をしているものです。 フォームでのユーザコントロールイベントを取得して処理をする方法が分かりません。 状況 ユーザコントロールにはテキストボックスを追加しています。 また、フォームにそのユーザコントロールを追加しています。 確認したいことは、ユーザコントロールのテキストボックスになにか値を入力したタイミングでチェンジイベントをフォーム側で察知し、処理をするというものです。 どなたか、要点だけでもいいので教えていただけないでしょうか? 宜しくお願いいたします。

  • エクセルでフォーム中のテキスト値の保存方法

    今までは、エクセル(VBA)で、フォームを作成しテキストボックスを貼り付け入力された値の保存が必要な場合、シートに複写して保存しておき、フォームのイニシャライズの時に値を設定する。ってなことをしていました。ところが、ふと気づいたのですが、VBEでプロパティを直接設定(入力)した値は、シートに保存しておかなくとも、また、イニシャライズ時に値を設定しなくとも値が自動的に再設定されますよね? あれを、VBAから実現できないのでしょうか?必ずどこかに値の保存が自動的にされていると思うのですが・・・・? Me.TextBox1.Text = "test"ってVBA中で設定しても、値は保存されません。ところが、VBEでTextプロパティに直接入力した値は、次に、UserForm.showとした時に自動的に表示されます。なぜですか? どなたか?詳しい方いらっしゃいましたら保存する方法を教えてください。よろしくお願いいたします。

  • Accessで、フォームからフォームへ値を引き継ぐやり方

    フォームからフォームへ値を引き継ぐやり方を教えて下さい。 たとえば、フォームAのテキストボックスに対して取引先コードを入れるような場合に、 取引先検索専用画面(フォームB)で検索して、選択したレコードのデータをフォームAのテキストボックスに入れたいのです。 心優しい方、宜しくお願いいたします。

  • ACCESS 帳票フォームについて

    お世話になります。 工程表プログラムを作成しておりまして、 テーブルへ開始日と終了日の値を保存し、 帳票フォームのヘッダー部に日付を作成、 詳細部に直線のコントロールでその間を引こうと思ったのですが、変更すると全部の直線が同じになってしまいます。 テキストボックスなどを一度入れたらEnabledをfalseにしようとしたのですがそちらも全部同じになってしまいます。 上記のようなことは帳票フォームでは不可能なのでしょうか?

  • VBA テキストボックスのイベントについて

    Microsoft ACCESS 2010を使用しています。 「テキスト0」という名前のテキストボックスがあり、 Me![テキスト0].Value = "こんにちは" というコードでテキストボックスの文字を変更します。 この時、テキストボックスの値が変更されたという条件でまた別のコードを動作させたいのですが、テキストボックスのイベントである、「更新前処理」「更新後処理」「ダーティー時」「変更時」では、動作しませんでした。 テキストボックスの値を変更する段階で別のコードを入力すれば対応は可能なのですが、「テキストボックスの値を変更した時」のタイミングで別コードを動作させることで、コードをまとめたいと考えています。 これに対して良い方法はありますか?よろしくお願いします。

  • 「クラスプロパティ」 or 「セッション」保存?

    ・「クラスプロパティ」 へ保存するか、「セッション」へ保存するか迷っています ・両者の寿命の差はどうなっているでしょうか? ・特に「クラスプロパティ」の方を知りたいです ・そのクラスが読み込まれ続けている限りは、「プロパティ」へ保存したデータは読み込み可能? ・あるいは、生成したインスタンスが破棄されない限りは、「プロパティ」へ保存したデータは読み込み可能? ・もしくは、画面を更新しない限りは、「プロパティ」へ保存したデータは読み込み可能? ・利用は、AJAXで画面遷移なしで進んでいく場面間のデータ保持を想定しています ・また、例えば複数人が同時にアクセスして同じ処理が走った場合、「クラスプロパティ」の値は個別保存されるのでしょうか? ・「クラスプロパティ」ではなく「インスタンスプロパティ」だったら、複数保存OK?

    • ベストアンサー
    • PHP

専門家に質問してみよう