Ожидание ввода в пользовательском контроле - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь реализовать настраиваемое приглашение на выход в моей WinForms.(Я не должен использовать DialogBox)

У меня есть пользовательский объект управления, помещенный в мою основную форму, который невидим и отключен по умолчанию.Нажатие на определенную кнопку, которую я поместил в форму, показывает и включает объект, отключая все в моей форме, кроме пользовательского элемента управления.

private void btn_close_Click(object sender, EventArgs e) {
        prompt1.Visible = true;
        prompt1.Enabled = true;
        disableControls();

        //Wait for a button to be pressed in prompt1
        //Make an action based on a button pressed.
        //closeApp returns a boolean

        if (!prompt1.closeApp)
        {
            prompt1.Visible = false;
            prompt1.Enabled = false;
            enableControls();
        }
        else
        {
            Application.Exit();
        }

}

Вот мой код в объекте подсказки:

public partial class Prompt : UserControl
{
    bool exit;

    public bool closeApp
    {
        get{return exit;}
    }

    public Prompt()
    {
        InitializeComponent();
    }

    private void btn_yes_Click(object sender, EventArgs e)
    {
        exit = true;
    }

    private void btn_no_Click(object sender, EventArgs e)
    {
        exit = false;
        this.Hide();
    }
}

Что я хочу сделать, это дождаться нажатия кнопки в моем объекте подсказки, прежде чем перейти к следующей строке в btn_close_Click ().

Что мне делать?Есть ли лучший способ реализовать это?

1 Ответ

0 голосов
/ 07 декабря 2018

Добавьте события в свой usercontrol, а затем обработайте эти события в главной форме.

В вашем usercontrol:

public event EventHandler<EventArgs> ExitCancelled;
public event EventHandler<EventArgs> ExitApplication;

private void btn_yes_Click(object sender, EventArgs e)
{
    ExitApplication?.Invoke(this, EventArgs.Empty);
}

private void btn_no_Click(object sender, EventArgs e)
{
    ExitCancelled?.Invoke(this, EventArgs.Empty);
}

Обработка событий в вашей форме:

public void prompt1_ExitApplication(object sender, EventArgs e)
{
    Application.Exit();
}

public void prompt1_ExitCancelled(object sender, EventArgs e)
{
    prompt1.Hide();
    enablecontrols();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...