我收到错误'无法隐式转换类型'System.Windows.Forms.DialogResult'到System.Windows.MessageBoxResult'
起初我认为这只是一个缺少的导入,所以我放入了导入的System.Windows.Forms,但它无济于事,因为这样做会在我的实际消息框上引发错误,即'MessageBox'是一个不明确的参考'System.Windows.MessageBox'和'System.Windows.Forms.MessageBox'(这不是很难弄清楚:P),但原始邮件保持不变。
private void DisplayOnWebsiteChecked(Object sender, EventArgs e)
{
var departments = model.Name;
var departmentChildren = model.Children;
var messagebox = MessageBox.Show("Do you wish to hide all sub deparments and products.",
"List of Box",
MessageBoxButton.YesNo);
if (messagebox = System.Windows.Forms.DialogResult.Yes)
{
if (departmentChildren != null)
{
int zeroChildren = 0;
if (departmentChildren.Count.Equals(zeroChildren)) ;
{
foreach (Department Children in departmentChildren)
Children.IsVisibleOnWebsite = false;
}
}
}
else
return;
}
我已经包含了整个方法,只是你需要任何东西。
答案 0 :(得分:6)
鉴于您现在已经解释过这是一个WPF应用,如果您使用System.Windows.MessageBox.Show
,则应该与System.Windows.MessageBoxResult
进行比较。
基本上,如果你正在做WPF,你几乎肯定不希望任何提及System.Windows.Forms
,反之亦然。 (我很惊讶这完全是编译 - 你有两个组件的引用吗?这通常是一个坏主意......)
此外,您需要使用==
进行比较,而不是=
(作业)
var result = MessageBox.Show(...);
if (result == MessageBoxResult.Yes)
{
...
}
答案 1 :(得分:3)
我认为你的Windows窗体和WPF已经混淆了 - 如果你使用的是WPF MessageBox,那么你的返回值会有所不同。
所以它不是
messagebox = System.Windows.Forms.DialogResult.Yes
这是
messagebox == System.Windows.MessageBoxResult.Yes
另请注意==
,否则您将分配值,if测试将始终成功(带编译器警告)。
答案 2 :(得分:-1)
你的问题在这里:
if (messagebox = System.Windows.Forms.DialogResult.Yes)
首先,您要将DialogResult
分配到MessageBox
。其次,您试图将DialogResult
与MessageBox
进行比较。尝试类似:
if(MessageBox.Show("Message", MessageBoxButtons.YesNo) == DialogResult.Yes)
或者您可以将DialogResult分配到自己的变量中,并进行比较。