-1

これは、フォーム 2 でユーザー入力を取得し、フォーム 1 でデータを表示するためのトピック接続です。

これはform2の私のコードです。

public string UserText
    {
        get 
        { 
            return this.textBox1.Text; 
        }
        set 
        {
            this.UserText = value;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {


        if (textBox1.Text == "")
        {
            MessageBox.Show("Please enter keyword to search");
        }
        else 
        {
            //anta data input to form1.
            UserText = textBox1.Text;
        }

これはform1の私のコードです

private void Form1_Load(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.ShowDialog();

        string text = form2.UserText;
    }

ボタン検索をクリックすると、フォーム1をロードすると自動的にデータが表示されます。

実行すると、セッターで次のように表示されます。

無限ループまたは無限再帰がないことを確認してください。

なぜそう言うのですか?私は何を間違えましたか?

私も試してみました。

public string UserText
    {
        get 
        { 
            return this.UserText; 
        }
        set 
        {
            this.UserText = value;
        }
    }

しかし、それは同じように見えます。

====編集====今これを使用しようとしています:

public string UserText
{
    get 
    { 
        return this.textBox1.Text; 
    }
    set 
    {
        this.textBox1.Text = value;
    }
}

また、私はこれを試しました:

public string UserText { get; set;}

エラーは表示されませんが、form1 も読み込まれません。操作はそこで止まります。私が間違ったことはありますか?

4

2 に答える 2

3

UserTextプロパティのセッター内のコード:this.UserText = value;それ自体を呼び出します。ゲッターに基づいて、セッターを次のようにする必要があると思います。

set
{
    this.textBox1.Text = value;
}
于 2012-08-07T02:14:34.720 に答える
1

C# 4 を使用している場合

public string UserText {get;set;}

Form2 を Form1 コンストラクターに配置する必要があります

    public Form1()
    {
        this.InitializeComponent();

    Form2 form2 = new Form2();
    form2.ShowDialog();

    string text = form2.UserText;
    }

これは Form1 が表示される前に発生します

于 2012-08-07T02:16:25.547 に答える