无法将DialogResult隐式转换为MessageBoxResult

Hel*_*rld 2 c# wpf

我收到错误'无法隐式转换类型'System.Windows.Forms.DialogResult'到System.Windows.MessageBoxResult'

起初我以为这只是一个缺少的导入,所以我放入了导入的System.Windows.Forms,但它无济于事,因为这样做会在我的实际消息框中引发错误,即'MessageBox'是'系统之间的一个不明确的引用. 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;
    }
Run Code Online (Sandbox Code Playgroud)

我已经包含了整个方法,只是因为你需要任何东西.

Jon*_*eet 6

鉴于您现在已经解释过这是一个WPF应用程序,如果您正在使用,则System.Windows.MessageBox.Show应该进行比较System.Windows.MessageBoxResult.

基本上,如果你正在做WPF你几乎肯定不希望任何的提及System.Windows.Forms,反之亦然.(我很惊讶这完全是编译 - 你有两个组件的参考吗?这通常是一个坏主意......)

此外,您需要==用于比较,而不是=(赋值)

var result = MessageBox.Show(...);

if (result == MessageBoxResult.Yes)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)