DOBON.NETプログラミング道掲示板

■34146 / 2階層)  リストを別フォームに渡す方法
□投稿者/ 魔界の仮面弁士 大御所(1198回)-(2019/02/19(Tue) 16:59:25)
  • アイコン2019/02/19(Tue) 18:37:38 編集(投稿者)

    No34143に返信(包装紙さんの記事)
    > textBoxAddress.Text = "";
    > textBoxZipCode.Text = "";
    この 2 つの TextBox は、Form1 上にあるのですよね。


    > Form2ではテキストボックスが3つあります。テキストボックスにユーザーが値を入力します。
    > textBoxName1.Text = "YAMADA";
    > textBoxName2.Text = "TARO";
    > textBoxSex.Text = "MALE";
    この 3 つの TextBox は、Form2 上にあるのですよね。


    > lst.Add(textBox1.Text);
    > lst.Add(textBox2.Text);
    > lst.Add(textBox3.Text);
    この 3 つの TextBox は何でしょう?
    Form2 にある先の 3 つの TextBox の別名でしょうか。



    No34144に追記(魔界の仮面弁士の記事)
    > === 案1 ===
    > FontDialog クラスの Apply イベントを真似て、
    > Form2 側に独自のイベントを設けておき、
    > イベント引数またはプロパティで List<string> を返すようにする。


    【案1の実装例】

    public partial class Form1 : Form
    {
     private void Search(List<string> list)
     {
      // 実際は SQL での問い合わせを実施
      textBoxAddress.Text = "住所" + list.Count;
      textBoxZipCode.Text = "郵便番号";
     }

     private void button1_Click(object sender, EventArgs e)
     {
      using (var dialog = new Form2())
      {
       dialog.Apply += delegate { Search(dialog.CurrentList); };
       if (dialog.ShowDialog(this) == DialogResult.OK)
       {
        Search(dialog.CurrentList);
       }
      }
     }
    }

    public sealed partial class Form2 : Form
    {
     private void Form2_Load(object sender, EventArgs e)
     {
      // 下記はコードではなく、デザイン時に指定しておけば OK。
      button1.Text = "OK";
      button2.Text = "キャンセル";
      button3.Text = "適用";
      button1.DialogResult = DialogResult.OK;
      button2.DialogResult = DialogResult.Cancel;
      button3.DialogResult = DialogResult.None;
      AcceptButton = button1;
      CancelButton = button2;

      // button3.Click イベントへの「button3_Click」割り当ても忘れずに。
      // button1 / button2 の Click イベントは何も割り当てなくても構わない。
     }

     // Form2 の CurrentList プロパティは、
     // Form2 側の入力値を List<string> で返すためのもの
     public List<string> CurrentList
     {
      get
      {
       return new List<string>
       {
        textBoxName1.Text,
        textBoxName2.Text,
        textBoxSex.Text,
       };
      }
     }

     // Form2 の Apply イベントは、
     // Form2 の「適用」ボタン(button3)が押された事を知らせるもの
     public EventHandler Apply;

     private void button3_Click(object sender, EventArgs e)
     {
      // button3 が押されたら、Apply イベントを発火する
      Apply?.Invoke(this, EventArgs.Empty);
     }
    }
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[1]: リストを別フォームに渡す方法 /魔界の仮面弁士 返信無し
 
上記関連ツリー

Nomalアイコン リストを別フォームに渡す方法 / 包装紙 (19/02/19(Tue) 16:03) #34143
Nomalアイコン Re[1]: リストを別フォームに渡す方法 / 魔界の仮面弁士 (19/02/19(Tue) 16:26) #34144
│└Nomalアイコン リストを別フォームに渡す方法 / 魔界の仮面弁士 (19/02/19(Tue) 16:59) #34146 ←Now
Nomalアイコン Re[1]: リストを別フォームに渡す方法 / kiku (19/02/19(Tue) 16:47) #34145
  └Nomalアイコン Re[2]: リストを別フォームに渡す方法 / 包装紙 (19/02/19(Tue) 17:31) #34147
    └Nomalアイコン Re[3]: リストを別フォームに渡す方法 / 包装紙 (19/02/19(Tue) 17:40) #34148
      └Nomalアイコン Re[4]: リストを別フォームに渡す方法 / 包装紙 (19/02/19(Tue) 17:41) #34149
        └Nomalアイコン Re[5]: リストを別フォームに渡す方法 / 包装紙 (19/02/19(Tue) 17:43) #34150
          └Nomalアイコン Re[6]: リストを別フォームに渡す方法 / 包装紙 (19/02/19(Tue) 17:46) #34151
            └Nomalアイコン Re[7]: リストを別フォームに渡す方法 / 魔界の仮面弁士 (19/02/20(Wed) 09:26) #34152

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -