以下是代码:
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 :(得分: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)
我认为我的代码运行正常
var MyIni = new IniFile(@“F:\ Bioshock2SP.ini”);
TextBox.text = MyIni.Read(“VoVolume”);