返回一个dialogResult从方法到另一个使用。 C#

时间:2013-12-28 10:22:04

标签: c# dialogresult

我会尝试尽力解释。

我正在使用课程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或取消,它只会继续执行代码。

希望我有道理,谢谢

3 个答案:

答案 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  

}