Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF中的记事本,System.IO.File.ReadAllText_C#_Wpf_Openfiledialog - Fatal编程技术网

C# WPF中的记事本,System.IO.File.ReadAllText

C# WPF中的记事本,System.IO.File.ReadAllText,c#,wpf,openfiledialog,C#,Wpf,Openfiledialog,打开文本文件时遇到问题。。。 有此代码,调用后有空stringFromFile public string OpenTextFile () { var stringFromFile = string.Empty; OpenFileDialog ofd = new OpenFileDialog(); if (ofd.ShowDialog().ToString().Equals("OK")) stringFrom

打开文本文件时遇到问题。。。 有此代码,调用后有空stringFromFile

    public string OpenTextFile ()
    {
        var stringFromFile = string.Empty;
        OpenFileDialog ofd = new OpenFileDialog();
        if (ofd.ShowDialog().ToString().Equals("OK"))
            stringFromFile = System.IO.File.ReadAllText(ofd.FileName);
        return stringFromFile;
    }

在WPF
OpenFileDialog.ShowDialog()
中,返回一个可为null的

public string OpenTextFile()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            Nullable<bool> res = ofd.ShowDialog();
            if(res == true)
            {
                using(StreamReader sr = new StreamReader(ofd.FileName))
                {
                  return sr.ReadToEnd();
                }
            }
            //Here message error
            throw new Exception("Something");
        }
公共字符串OpenTextFile()
{
OpenFileDialog ofd=新建OpenFileDialog();
Nullable res=ofd.ShowDialog();
如果(res==true)
{
使用(StreamReader sr=新的StreamReader(ofd.FileName))
{
返回sr.ReadToEnd();
}
}
//此处显示消息错误
抛出新异常(“某物”);
}

在WPF
OpenFileDialog.ShowDialog()
中返回一个
Nullable
,因此您应该按如下方式更改代码

public string OpenTextFile()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            Nullable<bool> res = ofd.ShowDialog();
            if(res == true)
            {
                using(StreamReader sr = new StreamReader(ofd.FileName))
                {
                  return sr.ReadToEnd();
                }
            }
            //Here message error
            throw new Exception("Something");
        }
公共字符串OpenTextFile()
{
OpenFileDialog ofd=新建OpenFileDialog();
Nullable res=ofd.ShowDialog();
如果(res==true)
{
使用(StreamReader sr=新的StreamReader(ofd.FileName))
{
返回sr.ReadToEnd();
}
}
//此处显示消息错误
抛出新异常(“某物”);
}
不需要调用
ToString()
,更糟糕的是,如果
ShowDialog()
的返回值为null,则会抛出
NullReferenceException
,因为
ShowDialog()
返回另一个答案指出的
bool?
Nullable

这里有一个两行解决方案

string OpenTextFile()
{
    var ofd = new OpenFileDialog();
    return ofd.ShowDialog() == true ?
            System.IO.File.ReadAllText(ofd.FileName) :
            String.Empty;
}
不需要调用
ToString()
,更糟糕的是,如果
ShowDialog()
的返回值为null,则会抛出
NullReferenceException
,因为
ShowDialog()
返回另一个答案所指出的
bool?
null

这里有一个两行解决方案

string OpenTextFile()
{
    var ofd = new OpenFileDialog();
    return ofd.ShowDialog() == true ?
            System.IO.File.ReadAllText(ofd.FileName) :
            String.Empty;
}

您应该在if中使用DialogResult类,而不是比较字符串。。您确定文本结果不是“Ok”吗?尝试将断点放在if子句中。对……但是我如何重建它呢?应该在if中使用DialogResult类,而不是比较字符串。。您确定文本结果不是“Ok”吗?尝试将断点放在if子句中。对……但我如何重建它?它可以工作,谢谢。。。谢谢你的解释这很有效,谢谢你。。。谢谢你的解释