-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;
    }

我希望当我们点击按钮搜索时,它会在我们加载 form1 时自动显示数据。

当我跑步时,它在二传手上说:

确保您没有无限循环或无限递归。

为什么这么说?我做错了什么?

我也试过了。

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

但它看起来是一样的。

====EDIT==== 现在我正在尝试使用它:

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

我也试过这个:

public string UserText { get; set;}

但是它没有显示错误,它也没有加载form1。操作就停在那里。有什么我做错了吗?

4

2 回答 2

3

属性设置器中的代码UserTextthis.UserText = value;调用自身。基于getter,我认为你应该让setter是这样的:

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 回答