2016-08-18 49 views
-1

下面的代码:如何将文本框的文本设置为包含在字符串中的文件中的一行?

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

其他信息:对象引用不设置到 对象的实例。

+0

为什么你会让我们猜测例外是什么?发布细节。 – Blorgbeard

+0

对不起,我完全是新手编程,我会公布细节。 – ShadyOrb09

+1

#1编程规则:错误消息*不可互换(正如用户普遍认为的那样)。总是阅读它们,在寻求帮助时总是包含它们! – Blorgbeard

回答

2

好的。首先,如果尚未初始化,则不能使用该文本框。您需要确保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例如一个可怕的名字。

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

+0

嘿,谢谢你的工作!它将文本框中的整行显示为“VoVolume = 55”或“VoVolume = 1.552”等。如何才能打印出“55”? – ShadyOrb09

+0

我编辑了我的答案,将迈克的答案合并到我的答案中。您可以拆分“=”字符并获取数组的最后一个字符串。 – Kinetic

+0

完美!我不能upvote,但*,upvote * :) – ShadyOrb09

0

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

如果你拖放一个TextBox到表单,你可以找到Name属性,如:textBox1的

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

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

如果你建议一些建议最好的。'textBox1'不会是一个好名字 –

+0

我试过你的代码,并且得到了与上面相同的异常。 “文本框”是文本框的名称,我刚刚命名它是因为我正在试图将其作为我的主程序的测试。 – ShadyOrb09

-1
  • 见链接样本: Reading/writing an INI file
  • 我觉得我的代码运行正常

    VAR MyIni =新的ini文件(@“F: \ Bioshock2SP.ini“);

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

相关问题