我正在尝试在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()中的下一行。
我该怎么办?有没有更好的方法来实现这一点?
答案 0 :(得分:1)
将事件添加到用户控件中,然后在主窗体上处理这些事件。
在您的用户控件中:
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();
}