获取某些文本行c#

时间:2010-02-23 18:45:31

标签: c# winforms text streamreader

我想知道是否有人可以帮助我。我希望能让我的程序让用户只能从文本文档中读取某段代码。但是我希望将它放在按钮后面,以便可以打开和关闭它。我已经尝试过不同的方式来做这件事,但没有任何一点点差别。

这就是我的代码目前的立场。

namespace filestream
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private string Read(string file)
        {
            StreamReader reader = new StreamReader(file);
            string data = reader.ReadToEnd();
            reader.Close();

            return data;
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            DialogResult result = openFileDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                string data = Read(openFileDialog1.FileName);
                textBox1.Text = data;

            }
            else
            {
                //do nothing
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
        }
    }
}

我在这方面很新,所以任何帮助都将非常感激。

3 个答案:

答案 0 :(得分:2)

据我所知,你应该看到它应该有效。我唯一能想到的原因是你的按钮连接到button1_Click例程而不是btn1_Click例程。如果当你点击按钮而它没有做任何事情时,这是我能看到的唯一原因。代码看起来像是为了要求用户选择一个文件,然后读取整个文件并将其放在文本框中。

答案 1 :(得分:1)

如果您可以使用.Net 3.5和LINQ,这是一个选项......

public static class Tools
{
    public static IEnumerable<string> ReadAsLines(this string filename)
    {
        using (var reader = new StreamReader(filename))
            while (!reader.EndOfStream)
                yield return reader.ReadLine();
    }
}
class Program
{
    static void Main(string[] args)
    {
        var lines = "myfile.txt".ReadAsLines()
                                // you could even add a filter query/formatting
                                .Skip(100).Take(10) //do paging here
                                .ToArray();
    }
}

...扩展精神错乱以显示过滤,解析和格式化......

public static class Tools
{
    public static void Foreach<T>(this IEnumerable<T> input, Action<T> action)
    {
        foreach (var item in input)
            action(item);
    }
}
class Program
{
    static void Main(string[] args)
    {
        // the line below is standing in for your text file.  
        // this could be replaced by anything that returns IEnumerable<string>
        var data = new [] { "A 1 3", "B 2 5", "A 1 6", "G 2 7" };

        var format = "Alt: {1} BpM: {2} Type: {0}";

        var lines = from line in data
                    where line.StartsWith("A")
                    let parts = line.Split(' ')
                    let formatted = string.Format(format, parts)
                    select formatted;

        var page = lines.Skip(1).Take(2);

        page.Foreach(Console.WriteLine);
        // at this point the following will be written to the console
        //
        // Alt: 1 BpM: 6 Type: A
        //
    }
}

答案 2 :(得分:0)

您是否尝试过btn1_click的内容并将其放入button1_click?有时它对我有用。