如何将文本框的文本设置为字符串中包含的文件中的行?

时间:2016-08-18 01:34:36

标签: c#

以下是代码:

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();
}

我正在尝试在文件中找到一行,并且只在文本框中显示文件的实际设置部分。例如,我想找到包含“VoVolume = 55”的行,但我只想要,“55”显示在文本框中,甚至只是“1.534”。

启动程序时,我不断收到异常。 有什么想法吗?

异常详细信息:

  

NullReferenceException未处理。

     

类型'System.NullReferenceException'的未处理异常   发生在EditingTextFromFile.exe

中      

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

3 个答案:

答案 0 :(得分:2)

确定。首先,如果尚未初始化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实例的可怕名称。

编辑:我使用了迈克回答的代码。

答案 1 :(得分:0)

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

如果将TextBox拖放到表单中,可以找到Name属性,如:textBox1

然后您可以尝试以下代码:

textBox1.Text = lines.Split(new string[] { "=" }, StringSplitOptions.None).Last();

答案 2 :(得分:-1)

  • 请参阅链接示例: Reading/writing an INI file
  • 我认为我的代码运行正常

    var MyIni = new IniFile(@“F:\ Bioshock2SP.ini”);

    TextBox.text = MyIni.Read(“VoVolume”);