C# ';系统可为空<;布尔>';不包含';OK';

C# ';系统可为空<;布尔>';不包含';OK';,c#,wpf,file,dialog,C#,Wpf,File,Dialog,我正在尝试一个来自的基本文件对话框示例,但在“OK”上出现错误,我不知道为什么 错误1“System.Nullable”不包含“OK”的定义,并且找不到接受“System.Nullable”类型的第一个参数的扩展方法“OK”(是否缺少using指令或程序集引用?) 听起来您有一个名为DialogResult的本地属性。尝试改用System.Windows.Forms.DialogResult.OK。在.NET framework中有两个版本的OpenFileDialog:和。看起来您使用的是WP

我正在尝试一个来自的基本文件对话框示例,但在“OK”上出现错误,我不知道为什么

错误1“System.Nullable”不包含“OK”的定义,并且找不到接受“System.Nullable”类型的第一个参数的扩展方法“OK”(是否缺少using指令或程序集引用?)


听起来您有一个名为
DialogResult
的本地属性。尝试改用
System.Windows.Forms.DialogResult.OK

在.NET framework中有两个版本的
OpenFileDialog
:和。看起来您使用的是WPF one,它实际上从
OpenFile
返回一个
Nullable
值。WinForm版本返回一个
对话框结果
值,这似乎是您所期望的。

它似乎试图用于
系统.Windows.Controls
。 尝试显式调用
System.Windows.Forms

比如:


您的OpenFileDialog来自哪个程序集?这很有效,您能更具体一点吗?错误可能不在这里…您链接到的版本是WIN32版本。我认为WPF没有特定的类。@帕格注意,所讨论的类是在PresentationFramework程序集中定义的,它是WPF的核心程序集之一。
private void button1_Click(object sender, System.EventArgs e)
{
    Stream myStream = null;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;

    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        try
        {
            if ((myStream = openFileDialog1.OpenFile()) != null)
            {
                using (myStream)
                {
                    // Insert code to read the stream here.
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
        }
    }
}
System.Windows.Forms.OpenFileDialog openFileDialog1 = new System.Windows.Forms.OpenFileDialog();