我的代码有问题,如标题中所述。
所以我想做的是从文件中读取一个数字并将其打印到 TextBox
但我唯一能写的是 System.String[]
.
这是我的代码:
private void ladenToolStripMenuItem_Click(object sender, EventArgs e)
{
// Kontostand aus Datei auslesen und in variable speichern anschließend in tb schreiben
string[] Kontostand = File.ReadAllLines(pathkonto);
string tbkontostand = Kontostand.ToString();
this.lbKontostand.Text = "Kontostand: " + tbkontostand + "€";
string[] Log = File.ReadAllLines(pathlog);
string LoginTextbox = Log.ToString();
this.tbLog.Text = LoginTextbox;
}
也许我应该说我的 Kontostand 是一个我想要看起来像那样的标签:
Kontostand: 500 €
我想读出的文件看起来像这样:
500
谢谢你帮助我:)
蒂姆
最佳答案
您没有指定,但看起来您使用的是 Winforms。如果是这样,你应该使用这个:
string[] Log = File.ReadAllLines(pathlog);
this.tbLog.Lines = Log;
ToString()
方法的默认行为是只返回对象类型的名称。 string[]
类型不会覆盖默认行为,因此这就是您在文本框中得到的内容。
但是,Winforms TextBox
类有一个类型为 string[]
的 Lines
属性。因此,您只需将其直接设置为您从读取文件中获得的 string[]
。
在您的原始代码中,您还希望在 Label
文件中包含来自不同来源的行,您可以像这样轻松地做到这一点:
string[] Kontostand = File.ReadAllLines(pathkonto);
this.lbKontostand.Text = "Kontostand: "
+ string.Join("", Kontostand)
+ "€";
Label
控件没有 Lines
属性,因此在这种特殊情况下,您确实需要使用类似 >string.Join()
.
由于 Label
控件也没有多行模式,我只是将文件的内容与空字符串作为分隔符连接起来。在这里使用 Environment.NewLine
是没有意义的。您当然可以使用任何您想要的字符串来代替 ""
。这取决于你。
现在,从您编辑的问题来看,您可能根本不需要任何类型的多行支持,因为您描述的数据只是一行。如果确实如此,您的代码可以简单得多(并且效率更高):
private void ladenToolStripMenuItem_Click(object sender, EventArgs e)
{
this.lbKontostand.Text = "Kontostand: "
+ File.ReadAllText(pathkonto)
+ "€";
this.tbLog.Text = File.ReadAllText(pathlog);
}
就此而言,如果您只是想将文件内容复制到相应的控件中,无论如何都可以这样做。读取数组中的内容,仅将该数组的全部内容复制到控件中,效率低于仅读取所有文件文本并将其直接分配给 Text
属性。换行符将读入 ReadAllText()
返回的字符串中,因此无论文件内容是否真的是多行的,上面的代码应该比您最初尝试做的更好。
关于C# 将文件读入字符串数组并将其打印到文本框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46089679/