我的代码存在问题,标题中有一点描述。
所以我想要做的是从文件中读取一个数字并将其打印到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
感谢您帮助我:)
蒂姆
答案 0 :(得分:3)
您没有指定,但似乎您正在使用Winforms。如果是这样,你应该使用它:
string[] Log = File.ReadAllLines(pathlog);
this.tbLog.Lines = Log;
ToString()
方法的默认行为是返回对象类型的名称。 string[]
类型不会覆盖默认行为,以便您在文本框中获得的内容。
但是,Winforms TextBox
类的Lines
属性类型为string[]
。所以你只需要将它直接设置为从阅读文件中获得的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()
返回的字符串中,因此无论文件内容是否真的是多行,上述内容应该比您最初尝试的更好。
答案 1 :(得分:3)
首先需要确保TextBox将 Multiline 属性设置为true,并确保其高度足以查看多行。 接下来,不要将ToString应用于字符串数组。这只会产生类名,因为数组没有覆盖该方法,因此它们调用基类Object.ToString().
相反,您可以使用AppendText首先添加固定文字,然后使用string.Join来渲染文件的行,后跟最终的货币符号。
private void ladenToolStripMenuItem_Click(object sender, EventArgs e)
{
string[] Kontostand = File.ReadAllLines(pathkonto);
this.lbKontostand.AppendText("Kontostand: " + Environment.NewLine)
this.lbKontostand.AppendText(string.Join(Environment.NewLine,tbkontostand);
this.lbKontostand.AppendText(" €");
}
答案 2 :(得分:0)
string LoginTextbox = string.Join("\r\n", Log);
使用string.Join获取数组中所有值的逗号分隔字符串。
答案 3 :(得分:0)
Log.ToString();
只需调用string []类型变量的ToString
方法。
你需要循环数组中的所有字符串
foreach(string s in Log)
this.tbLog.Text += s+"\n";