C# 无法隐式地从对话框结果转换为bool
我试图将代码从wpf复制到winforms(此代码在wpf中工作) 我收到编译错误消息 无法将类型“System.Windows.Forms.DialogResult”隐式转换为 “布尔?” 换成C# 无法隐式地从对话框结果转换为bool,c#,.net,winforms,C#,.net,Winforms,我试图将代码从wpf复制到winforms(此代码在wpf中工作) 我收到编译错误消息 无法将类型“System.Windows.Forms.DialogResult”隐式转换为 “布尔?” 换成 return (new BCustomerSettingsDialog()).ShowDialog() == DialogResult.OK; 原因是,在Windows窗体中,该方法返回枚举值。可能值的范围取决于可用的按钮,它们的bool?转换可能取决于它们在应用程序中的含义。以下是一些处理少数情况
return (new BCustomerSettingsDialog()).ShowDialog() == DialogResult.OK;
原因是,在Windows窗体中,该方法返回枚举值。可能值的范围取决于可用的按钮,它们的
bool?
转换可能取决于它们在应用程序中的含义。以下是一些处理少数情况的通用逻辑:
public static bool? ShowSettingsDialogFor(ICustomCustomer)
{
if (cust is BasicCustomer)
{
DialogResult result = (new BCustomerSettingsDialog()).ShowDialog();
switch (result)
{
case DialogResult.OK:
case DialogResult.Yes:
return true;
case DialogResult.No:
case DialogResult.Abort:
return false;
case DialogResult.None:
case DialogResult.Cancel:
return null;
default:
throw new ApplicationException("Unexpected dialog result.")
}
}
}
为什么要返回
对话框结果
?错误消息清楚地表明:您将boolean定义为此方法的返回值,但返回的是DialogResult的实例。我勒个去?显然,您可能需要使用DialogResult
枚举来返回布尔值。
public static bool? ShowSettingsDialogFor(ICustomCustomer)
{
if (cust is BasicCustomer)
{
DialogResult result = (new BCustomerSettingsDialog()).ShowDialog();
switch (result)
{
case DialogResult.OK:
case DialogResult.Yes:
return true;
case DialogResult.No:
case DialogResult.Abort:
return false;
case DialogResult.None:
case DialogResult.Cancel:
return null;
default:
throw new ApplicationException("Unexpected dialog result.")
}
}
}