0

基本上,当用户在 on 中输入数据textfieldForm2,我希望将该数据存储到变量中,然后当用户选择按钮输入时,Form2将隐藏并Form1出现。然后我想Form1在新textfield的.Form2textfield

这是我的尝试,但它不起作用

在表格 2...

public string Player1 {get; set;}

private void pvpPlay_Click(object sender, EventArgs e)
    {

        Player1 = txtPlayer1.Text;
        Form1 op = new Form1();
        op.Show();
        this.Hide();

    }

然后在 Form1 上调用这个我放...

Form2 f = new Form2();
txtTest.Text = f.Player1;

但它不起作用。希望有人知道答案。

4

2 回答 2

0

我更喜欢使用这样的简单回调函数:

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

    public String SomeProperty { get; set; }

    private void OpenFormButton_Click(object sender, EventArgs e)
    {
        var secondForm = new Form2()
        {
            GetSomeProperty = () => { return SomeProperty ;};
        };
        this.Hide(); //The best way to hide!
        secondForm.Show();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        SomeProperty = "HELLO WORLD";
    }
}



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

    public Func<string> GetSomeProperty
    {
        get;
        set;
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        MessageBox.Show(GetSomeProperty.Invoke());
    }
}

每次调用GetSomeProperty.Invoke();Func 时都会调用 get 访问器并从第一个表单返回它

于 2013-01-20T14:56:01.290 回答
0

您可以做的是重载构造Form1函数。

public Form1(string s)
{  
    txtTest.Text=s;
}  

当从Form2

Form1 op = new Form1(Player1);
于 2013-01-20T15:31:42.077 回答