我会尝试尽力解释。
我正在使用课程InputBox
并使用方法shutownTime
class InputBox
{
public static DialogResult shutdownTime(string title, string promptText, ref string value)
{
我正在返回值
DialogResult dialogResult = form.ShowDialog();
return dialogResult;
在另一种方法中,我将值从另一个类传递给它。
string title2 = "Shutdown Timer";
string promptText = "How long would you like to delay the shutdown in minutes?";
string value = "0";
InputBox.shutdownTime(title2, promptText, ref value);
一切正常但是当我按下OK按钮时,如果我按下shutdownTime
方法中的取消按钮,则调试显示返回值为Cancel
//shutdownTime()
buttonOk.DialogResult = DialogResult.OK;
buttonCancel.DialogResult = DialogResult.Cancel;
我不能得到的是,如果我按下取消,如何在使用
后检查该值InputBox.shutdownTime(title2, promptText, ref value);
因为我可以按OK或取消,它只会继续执行代码。
希望我有道理,谢谢
答案 0 :(得分:0)
存储从shutdowTime()
var result = InputBox.shutdownTime(title2, promptText, ref value);
然后测试该值
if (result == DialogResult.OK)
{
// Do something
}
答案 1 :(得分:0)
对于纯模态对话框,一个有用的模式是创建一个对象来保存结果。 e.g。
public class InputBox
{
public class Result //
(
DialogResult : ModalResult {get; private set;}
DateTime : ShutDown {get; private set;}
... // more fields as needed
)
}
public Show()
{
var result = new Result(); // do not store within form -- prevent G/C of form
using (myform = new InputBox())
{
// pseudocode
// myform.Initialize();
//
result.ModalResult = myform.ShowDialog(...); // return
result.ShowDownTime = myform.controlShutDownTime.Value;
// myform.Finalize();
}
}
}
在模式对话框类中,添加一个创建模态窗体的公共静态方法,调用它然后在返回之前填充内部Result对象(上面的伪代码中的Show())。如果需要,您可以拥有多个版本的方法。
答案 2 :(得分:0)
if(InputBox.shutdownTime(title, prompt, ref stringresult)==DialogResult.Cancel)
{
/// DO CANCEL STUFF
}
else
{
// DO OK STUFF
}