-2

全て。

私はC#の初心者です。これは非常に人気のある質問です。しかし、私は理解していませんでした。間違いがあることは知っていますが、どこですか?たとえば、コード Form1 の最初の部分にはプライベート変数 test が含まれています。Form2 でこの変数の値を取得する必要があります。エラーはどこにありますか?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

        private void button1_Click(object sender, EventArgs e)
        {
            string test = "test this point";
            Form2 dlg = new Form2();
            dlg.test = test;
            dlg.Show();
        }
    }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public string test { get; set; }

        public Form2()
        {
            InitializeComponent();
            label1.Text = test;
        }
    }
}
4

4 に答える 4

4

Form2 では、パブリック プロパティを使用しています。これはpublic、form1 のオブジェクトを介して割り当てることができるためです。例えば:

 private void button1_Click(object sender, EventArgs e)
        {
            Form2 dlg = new Form2();
            dlg.test = "test this point";
            dlg.Show();
        }

フォーム 2 でこれを使用するにはいくつかの方法があります。ラベルのみのテキスト プロパティを設定するだけの場合は、これが最適です。

public partial class Form2 : Form
    {
        public string test 
        { 
           get { return label1.Text; }
           set { label1.Text = value ;} 
        }

        public Form2()
        {
            InitializeComponent();
        }
    }

プロパティのセッター内で、必要に応じて関数を呼び出すこともできます。

于 2012-05-09T10:16:16.493 に答える
1

そうです、このタイプの質問は何度も出されていますが、バージョンが少し異なります...過去に提供した回答をいくつか示します

これはあなたが探しているものに最も近いかもしれません

メソッド呼び出しを介して値を取得する1つの回答

もう1つは、2つのフォームを段階的に作成し、関数またはGetter(setter)を使用して他のフォームとの間で値を取得する方法です

于 2012-05-09T13:13:16.567 に答える
0

メソッド内のどこにも文字列テストを使用していません。これを試して:

private void button1_Click(object sender, EventArgs e)
{
    Form2 dlg = new Form2();

    dlg.Test = "test this point";

    dlg.Show();
}

TestForm2 オブジェクトのプロパティに値を割り当てる方法を確認してくださいdlg

注:Testプロパティ名のスタイルに関する一般的なコンセンサスであるため、プロパティに大文字を使用しました。

于 2012-05-09T10:16:02.173 に答える