2013-09-08 6 views
0

Я делал много разных исследований по этому вопросу и из того, что я обнаружил, tryparse и parse не существует для строк. Поэтому я ищу альтернативу для этого.C#, если текстовое поле пуст, пропустите или добавьте в список

У меня есть 7 разных текстовых полей, и когда кнопка нажата, мне нужно проверить текстовые поля (переменная - строка), и если текстовое поле пуст, я хочу, чтобы он завершил пропустить его. Если в текстовом поле есть строка, я хочу, чтобы она добавила ее в список. Это не должен быть список, я бы предпочел список, но я не собираюсь быть разборчивым! Практически наилучшим образом. У меня есть 7 других флажков, которые являются значениями с плавающей точкой, и это то, что я с этим:

List<float> ListGrade = new List<float>(); 

float LG; 

if (float.TryParse(txtGrade1.Text, out LG)) 
    ListGrade.Add(LG); 

if (float.TryParse(txtGrade2.Text, out LG)) 
    ListGrade.Add(LG); 

if (float.TryParse(txtGrade3.Text, out LG)) 
    ListGrade.Add(LG); 

if (float.TryParse(txtGrade4.Text, out LG)) 
    ListGrade.Add(LG); 

if (float.TryParse(txtGrade5.Text, out LG)) 
    ListGrade.Add(LG); 

if (float.TryParse(txtGrade6.Text, out LG)) 
    ListGrade.Add(LG); 

if (float.TryParse(txtGrade7.Text, out LG)) 
    ListGrade.Add(LG); 

Это работает идеально, но я не могу понять это для строки. Я думал об использовании nullorwhitespace, но я не уверен, как полностью пропускать текстовое поле. Я никогда раньше не использовал список, и это первый раз, и я не совсем понимаю ключевое слово out. Каждый раз, когда я выполняю поиск, ничего не приходит, кроме того, что если (textbox1.Text == ""), но это не показывает, как пропустить текстовое поле.

Кроме того, используя приведенный выше код и другой список, который выглядит идентично этому, кроме текстовых полей, идентичны и имя отличается, я получаю сообщение о том, что я использую необъявленную переменную при использовании этого кода в конце приведенный выше код:

if (ListGrades.Count > 0 && ListCredits.Count > 0) 
    AverageGrade = ListGrades.Sum()/ListCredits.Sum(); 

Должен ли я добавить к нему какое-либо заявление? Когда я это делаю, но я не уверен, что я могу добавить, поэтому конечный результат не будет испорчен.

Если вам, ребята, нужна дополнительная информация, пожалуйста, дайте мне знать. Я пытаюсь учиться и заниматься исследованиями, но я в тупике!

Спасибо, ребята!

+0

Это проект winform? – Damith

ответ

1

Вы можете пропустить добавление значения в список, выполнив следующие действия:

if (!string.IsNullOrWhiteSpace(txtbox.Text)) 
    // add to the list here 

Здесь информация о out keyword

1

и если текстовое поле пусто, я хочу, чтобы недавно полностью скипа это

вы можете сделать это

if(!string.isNullorEmpty(txtbox.Text)) 
{ 
    //do what you want here 
} 

или если вы хотите, что не должно быть никаких пробелы, как вкладки, разрывы строк и т.д. Вы должны использовать эту функцию

if(!string.isNullorWhiteSpace(txtbox.Text)) 
{ 
    //do what you want here 
} 

Я не совсем понимая ключевое слово из

Ключевое слово out приводит к передаче аргументов по ссылке. Это похоже на ключевое слово ref, за исключением того, что ref требует, чтобы переменная была инициализирована до ее передачи.Чтобы использовать выходной параметр, как определение метода и вызывающий метод должен явно использовать ключевое слово из

Я получаю сообщение об ошибке говорящее я использую необъявленную переменную

Показать декларацию ListCredits. И ListGrades должно быть ListGrade. Обратите внимание, что нет s в конце

1

Использование LINQ:

var textboxes = new [] { 
     txtCredit1, txtCredit2, txtCredit3, txtCredit4, 
     txtCredit5, txtCredit6, txtCredit7 
}; 
var ListCredits = textboxes.Select(tb => tb.Text) 
          .Where(txt => !String.IsNullOrEmpty(txt)) 
          .ToList(); 
0

Вы можете рассчитывать на короткой резки природы условными; если первая часть условия ANDed не выполняется, вторая часть не будет выполняться. Это позволяет пропускать текстовые поля.

List<float> grades = new List<float>(); 

float grade; 

if (!string.IsNullOrWhiteSpace(txtGrade1.Text) && float.TryParse(txtGrade1.Text, out grade)) 
    grades.Add(grade); 

if (!string.IsNullOrWhiteSpace(txtGrade2.Text) && float.TryParse(txtGrade2.Text, out grade)) 
    grades.Add(grade); 

if (!string.IsNullOrWhiteSpace(txtGrade3.Text) && float.TryParse(txtGrade3.Text, out grade)) 
    grades.Add(grade); 

... 

if (grades.Count > 0 && credits.Count > 0) 
    averageGrade = grades.Sum()/credits.Sum(); 
0

вы можете сделать это с помощью следующих способов:

1. if (!string.IsNullOrWhiteSpace(txtbox.Text)){add to list} 
2. if(textbox.text!="" && textbox.text!=null){add to list} 

Спасибо.