2

「タイプ'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;
    }

あなたがそれから何かを必要とする場合に備えて、私はメソッド全体を含めました。

4

3 に答える 3

6

これが WPF アプリであることを説明したので、使用しているSystem.Windows.MessageBox.Show場合は と比較する必要がありますSystem.Windows.MessageBoxResult

基本的に、WPF を使用している場合は、ほぼ確実にについて言及する必要はありませSystem.Windows.Formsん。逆の場合も同様です。(これがまったくコンパイルされていたことに驚いています-両方のアセンブリへの参照がありますか?それは一般的に悪い考えです...)

さらに、 (割り当て)==ではなく、比較に使用する必要があります=

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

if (result == MessageBoxResult.Yes)
{
    ...
}
于 2012-10-03T15:07:09.977 に答える
3

Windows フォームと WPF が混同されていると思います。WPF MessageBoxを使用している場合は、戻り値が異なります。

だからそうじゃない

messagebox = System.Windows.Forms.DialogResult.Yes

これは

messagebox == System.Windows.MessageBoxResult.Yes

==それ以外の場合は値を割り当てていることにも注意してください。if テストは常に成功します (コンパイラの警告が表示されます)。

于 2012-10-03T15:09:47.310 に答える
-1

あなたの問題はここにあります:

  if (messagebox = System.Windows.Forms.DialogResult.Yes)

DialogResultまず、 aを a に代入していMessageBoxます。DialogResult次に、 aと aを比較しようとしていMessageBoxます。次のようなものを試してください:

if(MessageBox.Show("Message", MessageBoxButtons.YesNo) == DialogResult.Yes)

または、DialogResult を独自の変数に割り当てて、それを比較することもできます。

于 2012-10-03T15:09:53.140 に答える