在两个表单之间交换数据并在数据更改时刷新表单

时间:2014-10-11 16:18:28

标签: c# winforms forms

我正在尝试将表单2中的数据发送到表单1,当我更新文本框中的数据时将刷新。我可以发送数据,但我无法刷新。我假设我必须把它放在一个刷新team1值的地方,但我想我发送数据的方式是只读的,不能动态改变

    //In Form 1
            Form2 frm = new Form2();
            Team1Lbl.Text = frm.team1;

    //In form 2
        public string team1
        {
            get { return Team1Name.Text + " - " + team1score.ToString(); }
        }

1 个答案:

答案 0 :(得分:1)

您没有发送数据,而是从另一个表单中检索数据。如果Form1中的文字发生变化,Form2应该如何知道?

您可以在Form2中声明一个告诉Form1该信息应该更新的事件

// In Form2
public event Action<string> TeamInfoChanged;

private void OnTeamInfoChanged()
{
    var handler = TeamInfoChanged;
    if (handler != null) {
        handler(Team1Name.Text + " - " + team1score);
    }
}

private void Team1Name_TextChanged(object sender, EventArgs e)
{
    OnTeamInfoChanged();
}

Form1中,您可以附加到此活动:

public partial class Form1 : Form
{
    private Form2 frm;

    public Form1()
    {
        InitializeComponent();
        frm = new Form2();
        frm.TeamInfoChanged += new Action<string>(frm_TeamInfoChanged);
        frm.Show();
    }

    void frm_TeamInfoChanged(string info)
    {
        Team1Lbl.Text = info;
    }
}