我尝试使用DialogResult
来检查Messagebox
的 YesNoCancel 。我正在使用以下代码,我认为没有任何问题:
DialogResult dlgResult = MessageBox.Show(
"Save changes before closing?",
"Warning",
MessageBoxButton.YesNoCancel,
MessageBoxImage.Question);
但是 Visual Studio 会让我错误地说
'System.Windows.Window.DialogResult' 是一个'财产',但用作一个 '类型'
答案 0 :(得分:10)
DialogResult Enumeration和Window.DialogResult Property之间存在冲突。
要解决此问题,您可以使用枚举的完全限定名称。如下:
System.Windows.Forms.DialogResult dlgResult = ...
但是,由于您使用的是 WPF ,请使用MessageBoxResult Enumeration获取消息的结果:
MessageBoxResult result =
MessageBox.Show("Would you like to see the simple version?",
"MessageBox Example", MessageBoxButton.OKCancel);
答案 1 :(得分:1)
尝试将dlgResult
声明为var
。然后它应该工作
var dlgResult =
MessageBox.Show("Save changes before closing?",
"Warning", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
WPF 下的MessageBox.Show
确实会返回MessageBoxResult而不是DialogResult
。 WindowsForms 中使用了DialogResult
。
答案 2 :(得分:1)
问题是DialogResult
也是表单的属性,编译器认为您正在引用此属性。
你有几个选择:
System.Windows.Forms.DialogResult
var
让编译器找出类型并删除名称冲突答案 3 :(得分:1)
DialogResult
不是类型,它是属性,您想要类型MessageBoxResult
我可以从问题中看出你没有使用winforms。所以代码会读,
MessageBoxResult result = MessageBox.Show(
"Save changes before closing?",
"Warning",
MessageBoxButton.YesNoCancel,
MessageBoxImage.Question);
答案 4 :(得分:1)
尝试使用MessageBoxResult
MessageBox将返回MessageBoxResult枚举值
MessageBoxResult dlgResult = MessageBox.Show("Save changes before closing?","Warning", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
Console.WriteLine(dlgResult);
答案 5 :(得分:1)
MessageBoxResult result = MessageBox.Show(
"Save changes before closing?",
"Warning",
MessageBoxButton.YesNoCancel,
MessageBoxImage.Question);
然后使用结果检查