我有这个示例代码来显示警告MessageBox
,
if (cmprLanguage != 0 || cmprmaxCase != 0 )
{
DialogResult result = MessageBox.Show("Alert message", "Alert", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (result == DialogResult.OK)
{
loginscreen obj = new loginscreen();
this.Close();
obj.Show();
}
else
{
settings obj = settings(); //this re-load this form i need to show this form without reload
obj.show();
}
}
else
{
loginscreen obj = new loginscreen();
this.Close();
obj.Show();
}
如果用户单击取消按钮,我需要关闭MessageBox
,如果他们单击确定,我需要执行OK
块内给出的过程。现在发生的情况是,如果我单击取消按钮,应用程序将重定向到主屏幕。
更新
我已经在窗体屏幕上为关闭图标写了一个关闭的事件。以前当我点击关闭图标时它直接将我带到登录屏幕,因为登录屏幕在这个窗体屏幕后面。有时用户可能输入数据而没有保存,如果他点击关闭图标我已经提出一个消息框来提醒用户。但是现在,如果我点击取消它再次带我登录屏幕,如果我点击确定它执行条件内的任务。如果我点击取消我需要显示当前屏幕与执行的操作(无需重新加载页面)
是否可以这样做?
答案 0 :(得分:0)
您的代码已按预期工作。但是为了清除,您可以将MessageBox.Show()
的结果放在变量中。这使得在更多代码中更容易维护和处理。像这样:
DialogResult result = MessageBox.Show("Settings not saved", "Alert", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
然后在代码中处理它:
if(result == DialogResult.OK)
{
//Show new data
}
else if (result == DialogResult.Cancel)
{
//Show current data
}
<强>更新强>
您的代码不正确,因为您已经提供给我们:您可以在彼此之后另外发表两个声明。
为什么不离开else
部分。仅在用户单击“确定”时执行操作。当用户单击“确定”时,这意味着他将保留当前表单而不保存挂起的更改。当他选择取消时,这意味着他想留在那个时刻的任何地方:
DialogResult result = MessageBox.Show("Settings not saved", "Alert", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (result == DialogResult.OK)
{
//User leaves without saving pending changes
loginscreen ob = new loginscreen();
this.Close();
ob.Show();
}
//No else: just stay wherever you are.
答案 1 :(得分:0)
DialogResult result = MessageBox.Show("Settings not saved", "Alert", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (result == DialogResult.OK)
{
loginscreen ob = new loginscreen();
this.Close();
ob.Show();
}
在我看来,这实际上满足了你的需求。这是你的原始代码,让我解释一下。
显示MessageBox并询问用户他/她是否想要取消或同意(OK)因为表单被关闭而丢弃数据。然后,由于您的代码已经设计好,它会创建一个新的登录屏幕并允许用户执行其他操作。
这实际上似乎就是你所需要的。您希望用户保持当前表单是单击取消按钮,这恰好是您只使用这段特定代码时会发生的情况。没有其他需要,因为没有其他事情需要发生。
如果您确实希望在else语句中执行其他代码,您可以考虑创建一个新表单并在其上放置“确定”和“取消”按钮(创建自己的“自定义MessageBox”)。如果确实需要,这将允许您更多选项。但是看看你想要实现的目标,你现在只使用if和no语句就可以了。