我正在尝试做的很简单;当我点击一个按钮时,我的应用程序应检查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
答案 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;
}
}