2

私はC#とWindowsフォームに比較的慣れていないので、簡単な質問のように思えるかもしれませんが、すみません。

開いたときにいくつかのデフォルト値を持つテキストボックスを含むダイアログボックスを持つWindowsアプリケーションがあります。これらは、ユーザーが使用したいものに応じて変更できます。次に、このダイアログボックスの値とメインフォームのコンテンツを使用して、XMLファイルを作成します。私が抱えている問題は、同じセッションで値を変更するためにダイアログボックスを再度開いた場合、元の値が存在し、新しい値は存在しないことです。

その特定のセッションで変更された値を保持するにはどうすればよいですか?

4

3 に答える 3

1

質問を正しく理解している場合は、バックグラウンド変数とTextChangedイベントを使用する必要があるように思われます(ただし、KeyDownイベントを好み、コードでは代わりにそれを使用します)。たとえば、テキストボックスをTextBox1と呼びましょう。次に、文字列Tempというグローバル変数を作成し、次のように使用できます。

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    temp = textBox1.Text;
}

ダイアログボックスを閉じると、その変数を他の場所で使用できます。この場合、XMLに送信したいようです。もう1つのオプションは、keydownイベントを使用して、テキストの値を保持する一時XMLファイルを作成することです。これは明らかに計算コストが高くなりますが、プロセッサが制限された環境で使用される場合を除いて、それほど大きな問題にはなりません。最後に言及するのは、マルチスレッドを使用していて、その一時値の値を渡すと、問題が発生する可能性があるということです。それを支援するために、最初から始めた以外のスレッドで変数を使用することを検討してください。

于 2013-01-28T18:47:40.427 に答える
1

次回ダイアログボックスを開いたときにユーザーの値を表示する場合は、それらの値をどこかに保存し、次にダイアログが表示されたときに(通常はForm_LoadまたはForm_Showで)再ロードする必要があります。そしてもちろん、終了する前に値を(おそらくForm_Close?に)保存する必要があります。

これらの値をどこに保存するかはあなた次第です。プログラムの実行専用にする場合は、フォームクラスのいくつかの静的変数に保存できます。または、次にプログラムを実行するときにこれらの設定を再ロードする場合は、構成ファイル、レジストリ、分離ストレージなどに保存できます。

于 2013-01-28T18:49:06.960 に答える
0

ユーザーが最後にダイアログを使用したときに入力した値を保持する場合は、ダイアログへの参照をどこかに保持する必要があります。

また、Loadイベントのダイアログでデータを設定すると、ユーザーが以前に入力したデータが消去される可能性があります。あなたのコードを見ずに、私はこの時点でこれ以上話すことができません。

于 2013-01-28T18:47:59.093 に答える