如何将文本框的值与文本文件中存储的值匹配

时间:2019-05-13 05:47:29

标签: c#

您好,我正在创建一个登录系统,该系统已将用户帐户存储到文本文件中。当用户输入用户名和密码时,程序应检查文本文件(如果用户退出),否则应不授予对系统的访问权限

我尝试使用StreamReader访问Path文件以匹配值,但无济于事

private void loginButton_Click(object sender, EventArgs e){

String user = usernameText.Text;
String pass = passText.Text;

StreamReader read = new StreamReader(@"profiles.txt");

 if(user.Contains(File.ReadLines(@"profiles.txt").ToString()) && pass.Contains(File.ReadLines(@"profiles.txt").ToString()))
  {
      login.Show();
  }
  else
  {
       MessageBox.Show("The username or Password is Incorrect"); 
   }
}

1 个答案:

答案 0 :(得分:0)

尽管您声明了StreamReader变量,但从未使用过它。您选择了File.ReadLines()静态方法。但是,您正在检查用户和密码字符串是否都包含文件user.Contains(File.ReadLines(@"profiles.txt").ToString())中的所有行。此外,调用ToString()不会返回文件中的行,而是返回IEnumerable返回的File.ReadLines() object 的字符串表示形式。

为了建议另一种方法,我假设以下内容:文件的每一行对应一个用户和一个密码,使用相同的用户名和密码的用户不能超过一个,User课程已按照 bolkay 在评论中的建议进行构建。

User user = null;
string line;
while ((line = read.ReadLine()) != null)
{
   if (line.Contains(user) && line.Contains(password))
   {
      login.Show();
      user = new User() { Username = user, Password = password };
      break;
   }
}
if (user == null) MessageBox.Show("The username or Password is Incorrect"); 

如果要使用File.ReadLines(),请使用foreach而不是while: foreach (string line in File.ReadLines("...")) { ... }