繁体   English   中英

如何将文本文件中的特定文本写入文本框?

[英]How to write specific text from text file to textbox?

我想问一下如何从文本文件中编写特定于文本框的文本? 在这种情况下,我正在寻找包含“***”的行,我想列出上面的行。 我试试这个代码:

using System;
using System.Collections.Generic;

using System.IO;

using System.Windows.Forms;

namespace mise2
{
public partial class Form1 : Form
{
    private String filePath_output = string.Empty;
    
    private String filePath_input = string.Empty;

    public Form1()
    {
        InitializeComponent();
        textBox2.AutoSize = true;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();

        openFileDialog.InitialDirectory = @"C:\Users\";


        openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
        openFileDialog.FilterIndex = 2;
        openFileDialog.RestoreDirectory = true;


        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            filePath_input = openFileDialog.FileName;
            this.textBox1.Text = filePath_input;
        }

        
        List<String> lines = new List<String>();
        TextReader sr = File.OpenText(filePath_input);

        TextWriter sw = File.CreateText(textBox2.ToString());
        Int32 ri1 = 0;
        String line1 = "";
       
     
        {
            line1 = sr.ReadLine();
            lines.Add(line1);

            if (line1.IndexOf(@"***") != -1)
            {

                if (ri1 != 0)
                {
                    line1 = lines[ri1 - 1];
                   

                }

            }

            ri1 = ri1 + 1;

        }

        sr.Close();
        sw.Close();

        lines.Clear();


        textBox2.Text = filePath_output;
    }
}
}

写入文件不是问题我是通过流编写器做到的,但是一旦它是一个文本框,我什至没有开始任何我有错误的方式

事件处理程序的第一部分很好,您从用户那里获得了一条路径。 我会将其分解为一个单独的函数。

现在,让我们假设我们在filepath_input有那个路径,现在我们来解决问题:

private string FindLineAboveAsterisks(string path)
{
     using TextReader sr = File.OpenText(path);
     return FindLineAboveAsterisks(sr);
}

private string FindLineAboveAsterisks(TextReader reader)
{
     string result = reader.ReadLine(); // Read 1st line
     string line = string.Empty;
     while ( result is object && (line = reader.ReadLine()) is object ) // Read to EOF
     {
         if (line.Contains("***"))
         {
             return result;
         }
         else
         {
              result = line;
         }
     }
     return string.Empty;
}

最后,您可以使用结果设置 textbox2:

 textBox2.Text = FindLineAboveAsterisks(filepath_input);
    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM