Обмен данными между двумя формами и обновление формы при изменении данных

1

Я пытаюсь отправить данные из формы 2 в форму 1, которая будет обновляться при обновлении данных в текстовом поле. Я могу отправить данные, но я не могу их обновить. Я предполагаю, что я должен помещать его где-то, что обновляет значения команды1, но я предполагаю, что способ передачи данных по-прежнему доступен только для чтения и не может быть динамически изменен

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

    //In form 2
        public string team1
        {
            get { return Team1Name.Text + " - " + team1score.ToString(); }
        }
  • 0
    То, как вы это сделали, должно обновить Team1Lbl . Вопрос в том, где (и когда) вы вызываете этот код? Может ли Team1Lbl.Text снова измениться другим фрагментом кода? Является ли код runnnig в бесконечном цикле и, таким образом, препятствует обновлению формы?
  • 0
    Я пытался поместить строку в класс Form2 и обновить ее в функции TextChange, но я не могу использовать ее в TextChanged.
Теги:
forms
winforms

1 ответ

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;
    }
}
  • 0
    Хорошо. Я пробовал это, но он не будет отправлять в Form1 сейчас, возможно, у меня в плохом месте. Какую функцию я должен поместить строку frm.TeamInfoChanged. Также, когда я пытаюсь отладить, я получаю ошибку, не могу загрузить файл. но когда я бегу без отладки, он работает нормально
  • 0
    Изменено имя сборки и отладка теперь работает нормально. проблема в том, что код, который я помещаю в форму Form1, не ударил.
Показать ещё 12 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню