Как отправить «сообщение» в родительскую форму из дочерней формы? - PullRequest
0 голосов
/ 19 января 2019

У меня есть две формы: Форма 1: Родитель: Экран входа Форма 2: Ребенок: заявка

При запуске приложения отображается Form1. Пользователь вводит пароль, и если этот пароль совпадает с константой, Form1 скрывается и Form2 появляется. Теперь, когда я закрываю Form2 с помощью кнопки «выход из системы», я отправляю «сообщение» в Form1, чтобы оно снова могло появиться. Думайте об этом как о приложении мессенджера. Когда вы выйдете из системы, он вернется к экрану входа в систему.

Я ищу два дня, но не могу найти ничего, что помогло бы мне. Извините, если этот вопрос дубликат.

Ответы [ 3 ]

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

Form1:

создание статической и публичной переменной

static public string message = "Message from Form1";

Form2

используйте эту переменную

MessageBox.Show(Form1.Message, " Message");
0 голосов
/ 22 января 2019

Я предлагаю вам использовать Основную / Форму заявки в качестве родителя и показать форму входа в систему как дочернюю.Показать форму входа с помощью ShowDialog () в событии «Показано» основной / родительской формы (для примера).В зависимости от того, насколько умны ваши классы Form, вам, возможно, придется изменить код ниже.Пример кода ниже подразумевает, что форма входа в систему выполняет всю логику входа в систему.Затем он закрывает свой родительский объект, если вход был успешным или нет, с помощью свойства DialogResult при закрытии.

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

    private void ButtonLogoutClick(object sender, EventArgs e)
    {
        LoginUser();
    }

    private void MainFormShown(object sender, EventArgs e)
    {
        LoginUser();
    }

    private void LoginUser()
    {
        using (var loginForm = new LoginForm())
        {
            var loginResult = loginForm.ShowDialog();
            if (loginResult == DialogResult.OK)
            {
                //Login Success
                var userId = loginForm.User.ID; //Query user ID from Login Form for example
            }
            else
            {
                //Login Failed
                Close(); //Close Program for example
            }
        }
    }
}
0 голосов
/ 20 января 2019

В Form1 вы можете открыть подписку на событие FormClosed второй формы перед ее открытием:

var form2 = new Form2();
form2.FormClosed += Form2_FormClosed;
form2.Show();

Затем вы можете сделать что-нибудь полезное в обработчике событий в Form1:

private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
    MessageBox.Show("Form 2 closed");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...