使用errorbox转换委托会返回错误

时间:2010-10-14 15:29:28

标签: c#

我完全不知道从哪里开始。

这是我无法通过的代码行。

  if (error.GetReaction(ErrorReaction.InformUser) == null)
                {
                    error.SetReaction(new ErrorReactionClass(ErrorReaction.InformUser, (CachedAnonymousMethodDelegate1 != null) ? CachedAnonymousMethodDelegate1 : (CachedAnonymousMethodDelegate1 = new Method(ErrorMessageBox.ShowDialog)), "OK", ""));
                }

我从这个

中得到以下错误

错误30'System.Windows.Forms.DialogResult System.Windows.Forms.Form.ShowDialog()'返回类型错误
错误31非静态字段,方法或属性'System.Windows.Forms.Form.ShowDialog()'

需要对象引用

1 个答案:

答案 0 :(得分:1)

这里有两个错误。

  1. 对ShowDialog的调用没有委托所期望的返回类型。
  2. 您不能在类型上调用“ShowDialog”,因为它不是静态方法。您需要提供一个实际的实例。
  3. 我怀疑这可能会满足您的需求:

    // Not sure how many arguments your "Method" delegate gets
    Method showDialog = (arg1, arg2) =>
    {
         var form = new ErrorMessageBox();
         // Setup form with arg1/arg2/etc
         form.ShowDialog();
    
         // return appropriate return type here...
    };
    
    error.SetReaction(
        new ErrorReactionClass(
            ErrorReaction.InformUser, 
            (CachedAnonymousMethodDelegate1 != null) 
                ? CachedAnonymousMethodDelegate1 
                : (CachedAnonymousMethodDelegate1 = showDialog)
            , "OK", ""));