0

form1にdatagridviewがあり、別のフォームにlabelboxがあります。私がやりたいのは、form1で行が選択されるたびに、そのすべてのデータがlabelboxeを使用してフォーム2に表示されることです。つまり、選択した行の各列は、適切なラベルボックスに配布されます。

4

1 に答える 1

2

このようなことを行うにはいくつかの方法があります。データを渡すには、次の 2 つの方法があります。

Form2 では、2 つのオブジェクトを受け取る 2 つ目のコンストラクターを作成する必要があります。

public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }


        public string yourName { get; set; }
        public int Age { get; set; }

        public Form2(string name, int age)
        {
            InitializeComponent();

            yourName = name;
            Age = age;

        }

        private void Form2_Load(object sender, EventArgs e)
        {
            label1.Text = yourName;
            label2.Text = Age.ToString();
        }
    }

Form1 では、Form2 のインスタンスを作成し、オブジェクトを渡します。

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 F2 = new Form2("Jon Smith", 33);

            this.Hide();
            F2.ShowDialog();

        }
    }

または、次のようにすることもできます。

フォーム 2 では、デフォルトでプライベートに設定されるため、ラベル修飾子のプロパティをパブリックとして設定する必要があります。これは、デザイン モードのプロパティ タブから実行できます。

完了したら、form1 で Form2 のインスタンスを作成し、パブリック ラベルに値を渡すことができます。

Form2 f2 = new Form2();

f2.label1.text = datagridview1.currentRow.cells[0].value.tostring();

f2.ShowDialog();

お役に立てれば。

于 2013-01-19T09:59:22.367 に答える