C#将文件读入字符串数组并将其打印到文本框中

时间:2017-09-07 06:50:39

标签: c#

我的代码存在问题,标题中有一点描述。

所以我想要做的是从文件中读取一个数字并将其打印到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

感谢您帮助我:)

蒂姆

4 个答案:

答案 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";