2013-07-05 2 views
0

Мне нужно создать простую форму входа в Windows. У меня есть файлы, загружающие текстовый файл на мой диск c, но когда я сравниваю строку, которую создал я, и ее неправильная работа, это мой кодC# Windows Form Login Program

private void button1_Click(object sender, EventArgs e) 
    { 
     const string f = "C:/Users.txt"; 

     List<string> lines = new List<string>(); 

     string userNameInput = Convert.ToString(userBox); 

     using (StreamReader r = new StreamReader(f)) 
     { 

      string line; 
      while ((line = r.ReadLine()) != null) 
      { 
       lines.Add(line); 
      } 
     } 
     for (int i = 0; i < lines.Count; i++) 
     { 
      MessageBox.Show(lines[i]); 
      MessageBox.Show(userNameInput); 
      if (lines[i] == userNameInput) 
      { 
       MessageBox.Show("correct"); 
      } 
      else 
      { 
       MessageBox.Show("Not Correct"); 
      } 

     } 
    } 
} 

}

+0

'lines [i]' будет иметь crlf в конце, поэтому вам нужно будет обрезать его. Также [File.ReadAllText] (http://msdn.microsoft.com/en-us/library/ms143368.aspx) - это один код строки, который позволяет открыть и закрыть файл. – bansi

+0

Было бы легче открыть читать делать то, что я должен сделать, а затем закрыть? – user2552211

+0

@bansi Похоже, что это не обязательно так - я читаю содержимое текстового файла так же. Строки, добавленные в коллекцию строк _do not_, на самом деле имеют разрывы строк в конце. – doppelgreener

ответ

2

Вы можете сделать, как показано ниже

if (File.ReadAllLines("C:/Users.txt").Select(x=>x.Trim()).Contains(userBox.Text.Trim())) 
{ 
    MessageBox.Show("correct"); 
} 
else 
{ 
    MessageBox.Show("Not Correct"); 
} 

Что он делает, это прочитать все строки из вашего файла и обрезать каждую строку и сравнить с текстом ввода. если есть соответствующая строка, вы получите сообщение как правильно

+0

Wicked, который отлично сработал спасибо – user2552211

1

Вы могли бы просто немного с:

 const string f = @"C:\Users.txt"; 
     string[] lines = System.IO.File.ReadAllLines(f); 
     if (Array.IndexOf(lines, userBox.Text) != -1) 
     { 
      MessageBox.Show("correct"); 
     } 
     else 
     { 
      MessageBox.Show("Not Correct"); 
     } 
1

Зачем использовать это?

string userNameInput = Convert.ToString(userBox); 

Это может быть использовано и легче получить текст textBox сам.

string userNameInput = userBox.text; 

И это должно помочь с тем, что вам нужно.

const string f = "C:/Users.txt"; 
string file = System.IO.File.ReadAllText(f); 

string[] strings = Regex.Split(file.TrimEnd(), @"\r\n"); 

foreach (String str in strings) 
{ 
    // Do something with the string. Each string comes in one at a time. 
    // So this will be run like for but is simple, and easy for one object. 
    // str = the string of the line. 
    // I shall let you learn the rest it is fairly easy. here is one tip 
    lines.Add(str); 
} 
// So something with lines list 

Надеюсь, я помог!

+0

Я не понял, что вы смогли сделать эту строку userNameInput = userBox.text; спасибо за помощь – user2552211