簡體   English   中英

等待用戶控制中的輸入

[英]Wait for Input in User Control

我正在嘗試在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()中的下一行。

我該怎么辦? 有沒有更好的方法來實現這一目標?

將事件添加到用戶控件,然后在主窗體上處理這些事件。

在您的用戶控件中:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM