メインフォームとサブフォーム間のデータのやり取り

プログラム学習

Form1から新たにForm2を作成したり、データを移動したりする。例えば、Form1で画像リスト作成して、そのリストをForm2で表示すると言った場合Form1とForm2の間でデータのやり取りしなければなりません。

①Form1からForm2を作る

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
  Form2 f2; Form1クラスの中でForm2型を宣言する
}
一方Form1からForm2を呼び出したときにインスタンスを返せるようにform2クラスに次のコードを加える。
        public static Form2 Instance
        {
            get
            {
                //_instanceがnullまたは破棄されているときは、
                //新しくインスタンスを作成する
                if (_instance == null || _instance.IsDisposed)
                {
                    _instance = new Form2();
                }
                return _instance;
            }
        }

②Form1のデータをForm2へ移す

Form2の各contorl(button,listboxなど)においてプロパティー項目のデザインの覧のModifiersをprivateからpublicもしくはinternalへ選択し直すとアクセスできるようになります。この例では、Form2のcombobox1のModifiersをpublicに設定してください。次のコードをForm1.csに加えます。

                f2 = Form2.Instance; 
                for (int j = 0; j < checkedListBox1.Items.Count; ++j)
                {
                    string kakutyousi = Path.GetExtension(checkedListBox1.Items[j].ToString());
                    if (kakutyousi == ".bmp"
                        || kakutyousi == ".jpg"
                        || kakutyousi == ".JPG"
                        || kakutyousi == ".tif"
                        || kakutyousi == ".png"
                        || kakutyousi == ".gif")
                        f2.comboBox1.Items.Add(checkedListBox1.Items[j]);
                }

Form1のcheckedListBox1の画像リストをForm2のcomboBox1へ移したとこです。

コメント

タイトルとURLをコピーしました