Как передать текст из формы 1 в форму 2, когда «обе формы открыты» - PullRequest
0 голосов
/ 27 января 2019

У меня есть две формы "обе открытые".Я хочу отправить значение ячейки datagridview из формы 1 (уже открытой) в форму 2 (уже открытой).(Я не хочу передавать текст при загрузке формы, но после некоторых изменений в уже открытой форме).Я искал в Интернете в течение нескольких дней, но я не могу найти один для уже открытых форм.(Только те, которые содержат form.Show() свойство).

1 Ответ

0 голосов
/ 27 января 2019

Вы можете создать общий одноэлементный класс для хранения ваших данных.

/// <summary>
/// A singleton class to keep your application data
/// </summary>
public class MySharedData
{
    /// <summary>
    /// Called when data changes
    /// </summary>
    public event EventHandler DataChanged;
    private static MySharedData _instance;
    private object _data;

    public static MySharedData Instance => _instance ?? (_instance = new MySharedData());

    private MySharedData()
    {
    }

    /// <summary>
    /// Gets or sets the data you want to share
    /// </summary>
    public object Data
    {
        get => _data;
        set
        {
            _data = value;
            OnDataChanged();
        }
    }

    protected virtual void OnDataChanged()
    {
        DataChanged?.Invoke(this, EventArgs.Empty);
    }
}

Использование события для уведомления о том, что данные обновлены.

Затем в формах подпишитесь на событие и добавьте свою логику обновления

    public class YourForm : Form
    {
        public YourForm()
        {
            MySharedData.Instance.DataChanged += Instance_DataChanged;
        }

        private void Instance_DataChanged(object sender, EventArgs e)
        {
            // TODO: redraw your form
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...