如何检查文本框中是否有来自带有C#的TXT文件的行

时间:2015-03-06 23:36:51

标签: c# textbox .net-4.5 streamreader

我正在尝试做的很简单;当我点击一个按钮时,我的应用程序应检查textBox1.Text是否有来自文本文件的行。

注意:我不想检查文本框中是否包含所有文本文件,只是为了查看它是否有一个LINE。

我试过这个没有成功:

 private void acceptBtn_Click(object sender, EventArgs e)
    {
        StreamReader sr = new StreamReader(usersPath);
        string usersTXT = sr.ReadLine();
        if (user_txt.Text == usersTXT)
        {
            loginPanel.Visible = false;
        }
    }

希望有人可以帮助我。在此先感谢 - CCB

3 个答案:

答案 0 :(得分:3)

string usersTXT = sr.ReadLine();

只读一行。因此,您只检查是否与文件中的第一个行匹配。

你想要File.ReadALlLines(它也正确地处理了你的流,你不是):

if (File.ReadAllLines(usersPath).Contains(user_txt.Text))
{
}

读取所有行,列举所有行,检查行是否在集合中。这种方法的唯一缺点是它总是读取整个文件。如果您只想在找到输入之前阅读,则需要自己滚动读取循环。如果您采取该路线,请务必使用StreamReader区块中的using

你也可以使用File.ReadLines(感谢@ Selman22)来获取这个懒惰的枚举版本。我会亲自去这条路线。

http://referencesource.microsoft.com/#mscorlib/system/io/file.cs,675b2259e8706c26

显示此功能的实现

答案 1 :(得分:1)

if (File.ReadAllLines(path).Any(x => x == line))
{
    // line found
}

x == line替换为不区分大小写的检查,或Contains,如果需要。

答案 2 :(得分:0)

尝试在字符串上使用Contains()函数:

private void acceptBtn_Click(object sender, EventArgs e)
{
    StreamReader sr = new StreamReader(usersPath);
    string usersTXT = sr.ReadLine();
    if (user_txt.Text.Contains(usersTXT))
    {
        loginPanel.Visible = false;
    }
}
相关问题