0

「追加」と「編集」という2つのボタンがあるForm1.csがあります。

「追加」をクリックすると、ダイアログForm2.csが表示されます。

Form2にはTextBoxとComboBoxがあります。テキストボックスに値「A」を入力し、ComboBoxから「A」を選択するとします。次に、Form2を閉じます。

次に、Form1で[編集]ボタンをクリックすると、Form2が表示され、テキストボックスに「A」が表示され、コンボボックスに「A」が選択されます。

これは簡単な説明です。私が使用している実際のフォームには、コンボボックス、チェックボックス、テキストボックスなどを含む約10〜12の異なるコントロールがあります。

私の主な疑問は、これらの制御値をどこにどのように保存するかです。

私が見逃しているこのタイプのDialogBoxへの特定のアプローチはありますか?

4

5 に答える 5

1

ユーザーが最後に入力した値をロードしますか?

たとえば、彼はテキストボックスに「テキスト」と書き、「A」コンボボックスを選択すると、次に開いたときに事前に選択されているはずですか?

編集: Form.Close を使用して閉じるのではなく、非表示にします。Form1.非表示。次回開いたとき、値は引き続き保存されます。アプリケーションが閉じられていない限り。一方、ユーザーはウィンドウ フォームの [閉じる] ボタンをクリックする場合があります。適切な方法で「クリックできない」ようにするか、イベントを使用して構成することができます。

于 2012-04-23T14:34:10.320 に答える
1

渡したい値を格納するクラスを作成します(それを と呼びましょうFoo)。

Form2プロパティを持つ必要があります。プロパティのセッターで、コントロールを設定します。

public partial class Form2 : Form
{
    private Foo _bar;
    public Foo Bar
    {
        set
        {
            _bar = value;
            //set your controls here
        }
    }

[編集] ボタンで、次のようにプロパティを設定します。

Form2 form2 = new Form2();
form2.Bar = bar; //bar contains values to edit

次に、[保存] ボタンを に配置しForm2ます。これにより、コントロールからこのオブジェクトに値が保存されます。

すべてのコントロールについて、Fooクラスにフィールドがあります。stringテキストboolボックス、チェックボックス、enumまたはintコンボボックス (整数値が選択されたインデックスに等しい場合)。
または、代わりにクラスを使用Dictionaryして、すべてのコントロールにキーと値のペアを設定することもできます。

enum新規モードと編集モードでフォームの外観や動作が異なる場合は、いくつかの を使用することもできます。

于 2012-04-23T14:46:17.090 に答える
1

ダイアログ フォームには、必要なプロパティ/フィールドを含むフィールド (ビジネス オブジェクトのコピーなど) が必要です。次に、必要な動作に応じて、ダイアログ コンストラクターまたは Load でそれを渡すか初期化します。そこから、コントロールを作成/初期化できます。

組み込みのシステムが必要な場合は、PropertyGrid を参照してください (ダイアログに埋め込むことができます (質問に合わせて))。

于 2012-04-23T14:36:27.863 に答える
0

TextBox に値を設定し、comboBox で項目を選択するメソッドを Form2 に作成します。form2 をインスタンス化した直後で、それを表示する前に、このメソッドを呼び出します。例:

    public Form2()
    {
        InitializeComponent();
        comboBox1.Items.AddRange(new string[] { "a", "b", "c" });//fill comboBox your way on a loading time
    }

    public void UpdatingControls(string a, string b)
    {
        textBox1.Text = a;
        comboBox1.SelectedText = b;
    }
    //on form2;
    Form1 f2;
    private void OpenForm2Button_Click(object sender, EventArgs e)
    {
        f2 = new Form2();
        f2.UpdatingControls("a", "b"); //a will go into textBox, b will be choosen in comboBox
    }
于 2012-04-23T14:29:40.820 に答える
0
public Form2(string form1Textbox)
{
    InitializeComponent();
    form2Textbox.Text = form1Textbox;
}
于 2012-04-23T14:37:55.840 に答える