0

基本的に、ユーザーがtextfieldonにデータをForm2入力すると、そのデータが変数に格納され、ユーザーがボタンを選択すると入力Form2が非表示になり、表示されForm1ます。次に、 fromに入力されたデータを newForm1に表示したいと思います。textfieldForm2textfield

これは私の試みですが、うまくいきません

フォーム 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

できることは、コンストラクター をオーバーロードすることです。Form1

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

から電話するときForm2

Form1 op = new Form1(Player1);
于 2013-01-20T15:31:42.077 に答える
0

次のような単純な Cal​​lback 関数を使用することをお勧めします。

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

Func を呼び出すたびGetSomeProperty.Invoke();に get アクセサーが呼び出され、最初の Form から返されます

于 2013-01-20T14:56:01.290 に答える