如何将文本框's文本设置为包含在字符串中的文件中的一行

本文关键字:文本 文件 字符串 一行 设置 包含 | 更新日期: 2023-09-27 18:02:47

代码:

public Form1()
{
    string[] reader = File.ReadAllLines(@"F:'Bioshock2SP.ini");
    foreach (string lines in reader)
    {
        if (lines.Contains("VoVolume="))
        {
            lines.Substring(lines.Length -2);
            TextBox.Text = lines; //Exception
        }
    }
    InitializeComponent();
}

我试图在文件中找到一行,并仅在文本框中显示文件的实际设置部分。例如,我想找到包含"volvolume =55"的行,但我只想在文本框中显示"55",甚至只是"1.534"。

当我启动程序时,我总是得到一个异常。什么好主意吗?

异常细节:

NullReferenceException未处理。

类型为"System"的未处理异常。得到NullReferenceException"发生在EditingTextFromFile.exe

附加信息:对象引用未设置为类的实例对象。

如何将文本框's文本设置为包含在字符串中的文件中的一行

好的。首先,如果textBox没有初始化,就不能使用它。您需要确保首先运行InitializeComponent。这就是导致异常的原因。其次,该Substring没有做任何事情,因为您没有使用输出值。

这里是你的代码稍微修改,以纠正这两个问题:

public Form1()
{
    InitializeComponent();
    string[] reader = File.ReadAllLines(@"F:'Bioshock2SP.ini");
    foreach (string lines in reader)
    {
        if (lines.Contains("VoVolume="))
        {
            lines = lines.Substring(lines.Length - 2);
            TextBox.Text = lines.Split(new string[] { "=" }, StringSplitOptions.None).Last();
        }
    }   
}

TextBox对于TextBox实例来说是个糟糕的名字。

编辑:我使用了Mike的答案中的代码。

TextBox是一个类,不是一个实例。

如果你拖放一个文本框到表单,你可以找到Name属性,如:textBox1

那么你可以试试下面的代码:

textBox1.Text = lines.Split(new string[] { "=" }, StringSplitOptions.None).Last();
  • 参见链接示例:读取/写入INI文件
  • 我认为我的代码运行正常

    var MyIni = new initfile (@"F:'Bioshock2SP.ini");

    文本框。