C# TextWriter到TextBox

C# TextWriter到TextBox,c#,winforms,textbox,textwriter,C#,Winforms,Textbox,Textwriter,我有这个TextWriter public static string txt = "./Logs.txt"; public static TextWriter Logs = File.CreateText(txt); 我想做这样的事情 textBox1.Text = Logs.ToString(); Logs.Flush(); textBox1.Text = ""; File.WriteAllText(txt, textBox1.Text);

我有这个
TextWriter

    public static string txt = "./Logs.txt";
    public static TextWriter Logs = File.CreateText(txt);
我想做这样的事情

    textBox1.Text = Logs.ToString();
    Logs.Flush();
    textBox1.Text = "";
    File.WriteAllText(txt, textBox1.Text);
还是像这样

    textBox1.Text = Logs.ToString();
    Logs.Flush();
    textBox1.Text = "";
    File.WriteAllText(txt, textBox1.Text);
我也试过了

public class ControlWriter : TextWriter
{
    private Control textbox;
    public ControlWriter(Control textbox)
    {
        this.textbox = textbox;
    }

    public override void Write(char value)
    {
        textbox.Text += value;
    }

    public override void Write(string value)
    {
        textbox.Text += value;
    }

    public override Encoding Encoding
    {
        get { return Encoding.ASCII; }
    }
}
//in the Form_Load
    TextWriter TW = new ControlWriter(textBox1);

它可以工作,但如果应用程序开始连续写入,应用程序将冻结……

您似乎想要读取数据,但问题没有清楚地描述它,因此我将假设它

如果是这样,您可以使用
文本阅读器

编辑

TextWriter Logs = File.CreateText(txt);
Logs.Close();
TextReader logs = File.OpenText(txt);
String data = logs.ReadToEnd();
logs.Close();
上述代码有效,您必须关闭打开的文件,以便在任何其他进程中使用

但是,我建议使用
文件
来创建和读取文件。这很简单,创建或读取后不必关闭文件,而且很短

示例:

//To create file, where *txt* is your path.
File.WriteAllText(txt, "Whatever you want in file."); 
//To read your file, where *txt* is your path.
String data = File.ReadAllText(txt)

看起来你想读取数据,但问题没有清楚地描述它,所以我假设它

如果是这样,您可以使用
文本阅读器

编辑

TextWriter Logs = File.CreateText(txt);
Logs.Close();
TextReader logs = File.OpenText(txt);
String data = logs.ReadToEnd();
logs.Close();
上述代码有效,您必须关闭打开的文件,以便在任何其他进程中使用

但是,我建议使用
文件
来创建和读取文件。这很简单,创建或读取后不必关闭文件,而且很短

示例:

//To create file, where *txt* is your path.
File.WriteAllText(txt, "Whatever you want in file."); 
//To read your file, where *txt* is your path.
String data = File.ReadAllText(txt)

我找到了解决方案,这是我使用的代码

            Logs.Flush();
            using (FileStream Steam = File.Open(txt, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (StreamReader Reader = new StreamReader(Steam))
                {
                    while (!Reader.EndOfStream)
                    {
                        textBox1.Text = Reader.ReadToEnd();
                        break;
                    }
                }
            }

我找到了解决方案,这是我使用的代码

            Logs.Flush();
            using (FileStream Steam = File.Open(txt, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (StreamReader Reader = new StreamReader(Steam))
                {
                    while (!Reader.EndOfStream)
                    {
                        textBox1.Text = Reader.ReadToEnd();
                        break;
                    }
                }
            }

你试过了吗?它起作用了吗?如果没有,什么不起作用?什么都不起作用,第一个代码在文本框“System.IO.StreamWriter”中输出,第二个代码会给我一个类似“Logs.txt被另一个进程使用”的错误,那么您尝试过吗?它起作用了吗?如果没有,什么不起作用?什么都不起作用,第一个代码在文本框“System.IO.StreamWriter”中输出,第二个代码会给我一个错误,比如“Logs.txt被另一个进程使用”我不想关闭
TextWriter
,因为在此之后日志将停止注册…一个文件不能由两个进程同时打开。。。您唯一能做的就是在读取文件后再次打开它。你试过我的代码建议了吗?在你的第一个代码中,你关闭了
TextWriter
(之后我无法重新打开它),第二个代码中,你使用了
字符串来填充txt文件,但我不能用
字符串替换我的
TextWriter
TextWriter
仅用于编写文本,它无法读取文本。阅读时必须使用
文本阅读器
。您是否尝试过使用
文件
?也许这样行。。。要再次打开
TextWriter
,请使用
Logs=newTextWriter(yourpath)
如果仍然不起作用,请详细说明你想要实现的目标。兄弟,我知道
TextWriter
的用途,不,我不能再使用
Logs=new TextWriter(txt)我想要的是将相同的内容(写入txt文件)从我的
TextWriter
输出到TextBox我不想关闭
TextWriter
,因为日志在此之后将停止注册…两个进程不能同时打开一个文件。。。您唯一能做的就是在读取文件后再次打开它。你试过我的代码建议了吗?在你的第一个代码中,你关闭了
TextWriter
(之后我无法重新打开它),第二个代码中,你使用了
字符串来填充txt文件,但我不能用
字符串替换我的
TextWriter
TextWriter
仅用于编写文本,它无法读取文本。阅读时必须使用
文本阅读器
。您是否尝试过使用
文件
?也许这样行。。。要再次打开
TextWriter
,请使用
Logs=newTextWriter(yourpath)
如果仍然不起作用,请详细说明你想要实现的目标。兄弟,我知道
TextWriter
的用途,不,我不能再使用
Logs=new TextWriter(txt)我想要的是将相同的内容(写入txt文件)从我的
TextWriter
输出到文本框中