Я бы использовал If...
, даже если вам это не нравится. Однако, если вы хотите что-то «более элегантный» вы можете использовать коллекцию и Linq
:
Dim allFields = New List(Of KeyValuePair(Of String, String)) From {
New KeyValuePair(Of String, String)("Server name", server_name),
New KeyValuePair(Of String, String)("User name", username),
New KeyValuePair(Of String, String)("Password", password),
New KeyValuePair(Of String, String)("Database", database)
}
Dim invalids = From kv In allFields
Where String.IsNullOrEmpty(kv.Value)
For Each invalid In invalids
Console.WriteLine("{0} field isn't filled correctly", invalid.Key)
Next
Просто другой вопрос, это возможный набор цвет переднего плана красный пустое поле в Еогеасп?
Да, то вам нужно хранить TextBox
вместо только это Text
в Value
. После этого вы можете установить цвет TextBox
в петле:
Dim allFields As New List(Of KeyValuePair(Of String, TextBox)) From {
New KeyValuePair(Of String, TextBox)("Server name", TextBox1),
New KeyValuePair(Of String, TextBox)("User name", TextBox2),
New KeyValuePair(Of String, TextBox)("Password", TextBox3),
New KeyValuePair(Of String, TextBox)("Database", TextBox4)
}
Dim invalids = From kv In allFields
Where String.IsNullOrEmpty(kv.Value.Text)
For Each invalid In invalids
Console.WriteLine("{0} field isn't filled correctly", invalid.Key)
invalid.Value.ForeColor = Drawing.Color.Red
Next
Обратите внимание, что это имеет еще одно преимущество: вы можете даже объявить этот список в качестве поля в классе (форма). Поэтому вам нужно только объявить и инициализировать его один раз. Если вы выполняете запрос LINQ в For Each
, он автоматически оценивает его с текущими значениями в текстовых окнах, а не с начальными, когда список был инициализирован. Примечание: вы должны использовать более значимые имена, такие как TxtPassword
, а не TextBox3
.
Кажется хорошим решением, не могли бы вы например, что такое от kv? – Dillinger
@Dillinger: это [запрос LINQ] (https://msdn.microsoft.com/en-us/library/bb384667.aspx). Вам нужно добавить 'Импорт System.Linq', либо в файл, либо в проект (желательно). –
Еще один вопрос: можно ли задать цвет переднего плана красным для пустого поля в foreach? – Dillinger