。从同一文本框中读取和写入文件

时间:2015-05-29 00:20:10

标签: c# winforms textbox

我有一个Windows窗体,它从文件中读取字符串,并在按下按钮时将它们全部显示在文本框中。

private void buttonTxt_Click(object sender, EventArgs e)
{
    string[] Test = File.ReadAllLines("C:\\testfile.txt");
    for (int i = 0; i < testfile.Length; i++)
    {
        TextBox.Text += testfile[i];
    }
}

我想制作两个单选按钮。所以第一个按钮让我的程序以我描述的方式工作(默认情况下)和第二个单选按钮使其工作反之亦然 - 这样我就可以自己写一个文本框了,当我按下一个按钮时它会写一个新行到同一个文件。有办法吗?

3 个答案:

答案 0 :(得分:1)

只需在此事件处理程序中添加if语句,即可实现发送和接收数据。完成。原则上样本:

private const string FilePath = @"C:\testfile.txt";

private void buttonTxt_Click(object sender, EventArgs e)
{
    if (radioReadMode.Checked) // check which radio button is selected
    {   // read mode
        string[] Test = File.ReadAllLines(FilePath);
        for (int i = 0; i < testfile.Length; i++)
            TextBox.Text += testfile[i];
    }
    else
    {   // write mode
        File.WriteAllText(FilePath, TextBox.Text);
    }
}

答案 1 :(得分:1)

我相信这是你可能正在寻找的东西。如果选中了单选按钮1,那么如果该文件存在,它将读取该文件并将其放入表单中的文本框中。如果切换到单选按钮2.您可以在文本框中输入,然后当您按下按钮时,它会将其附加到文件中。

public partial class Form1 : Form
{
    System.IO.StreamReader sr;
    System.IO.StreamWriter sw;

    public Form1()
    {
        InitializeComponent();
        radioButton1.Checked = true;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (radioButton1.Checked == true)
        {
            if (System.IO.File.Exists("C:\\testfile.txt"))
            {

                try
                {
                    sr = new System.IO.StreamReader("C:\\testfile.txt");
                    while (!sr.EndOfStream)
                    {
                        textBox1.Text += sr.ReadLine() + "\r\n";
                    }
                }
                finally 
                {
                    sr.Close();
                    sr.Dispose();
                }
            }
        }

        if (radioButton2.Checked == true)
        {
            if (System.IO.File.Exists("C:\\testfile.txt"))
            {
                try
                {
                    sw = new System.IO.StreamWriter("C:\\testfile.txt", true);
                    string result = textBox1.Text;
                    string[] lststr = result.Split(new Char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

                    foreach (string s in lststr)
                    {
                        sw.WriteLine(s);
                    }
                }
                finally 
                {
                    sw.Flush();
                    sw.Close();
                    sw.Dispose();
                }
            }
        }
    }

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        textBox1.Clear();
        textBox1.ReadOnly = true;

    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        textBox1.Clear();
        textBox1.ReadOnly = false;
    }


}

答案 2 :(得分:0)

是的,有办法。只需在表单中添加另一个按钮,然后通过这种方式从文本框中读取文本:

var textBoxContent = TextBox.Text;

并以这种方式将其保存到您的文件中

File.WriteAllText("C:\\testfile.txt", textBoxContent);

注意:我建议您将文件的路径变为变量