2017-01-02 4 views
1

ну код работает .. логика не имеет проблем вообще, но позвольте мне сказать вам .. это UGLY кусок кода .. пытался сделать это с помощью select .. но не смог увидеть способ.VB.net перекодировать эту структуру IF

Дело в том, что мне нужно активировать «Предупреждение», которое я получаю через любой из OR, но нет способа определить, какое условие не было выполнено, чтобы указать на это.

так что это .. было бы полезно, если бы кто-нибудь мог помочь мне очистить его.

If (txt_nombre_plato.Text = "") Then 
    MsgBox("Completa el Nombre del Platillo") 
    valida_blanco = False 
Else 
    If (txt_combo_sub_categoria_plato.Text = "CARNES") Or (txt_combo_sub_categoria_plato.Text = "MARISCOS") Or (txt_combo_sub_categoria_plato.Text = "PESCADOR") Or (txt_combo_sub_categoria_plato.Text = "PASTAS") Or (txt_combo_sub_categoria_plato.Text = "PIZZAS") Or (txt_combo_sub_categoria_plato.Text = "HAMBRUGESAS") Or (txt_combo_sub_categoria_plato.Text = "SOPAS") Or (txt_combo_sub_categoria_plato.Text = "BEBIDAS ALCOHOLICAS") Or (txt_combo_sub_categoria_plato.Text = "BEBIDAS SIN ALCOHOL") Or (txt_combo_sub_categoria_plato.Text = "POSTRES TORTAS") Or (txt_combo_sub_categoria_plato.Text = "MPOSTRES HELADOS") Then 
     MsgBox("Selecciona Sub-Categoria del Platillo") 
     valida_blanco = False 
    Else 
     If (txt_descripcion_plato.Text = "") Then 
      MsgBox("Coloca la descripción del Platillo") 
      valida_blanco = False 
     Else 
      If (txt_precio_plato.Text = "") Then 
       MsgBox("Coloca el precio del Platillo") 
       valida_blanco = False 
      Else 
       If (inflater_imagen = "") Then 
        MsgBox("Selecciona la imagen del Platillo") 
        valida_blanco = False 
       Else 
        If (chk_estado_contorno.Checked) And Lista_contorno.Items.Count = 0 Then MsgBox("Debes Agregar el contorno del Platillo", "Info") : valida_blanco = False 
       End If 
      End If 
     End If 
    End If 
End If 

ответ

0

Похожая версия для Marc, используя список для хранения сообщений об ошибках, но и список для значения txt_combo_sub_categoria_plato.Text проверяемые, что упрощает эту линию -

Dim subCategoriaPlatoList As New List(Of String)(New String() {"CARNES", "MARISCOS", "PESCADOR", "PASTAS", "PIZZAS", "HAMBRUGESAS", "SOPAS", "BEBIDAS ALCOHOLICAS", "BEBIDAS SIN ALCOHOL", "POSTRES TORTAS", "MPOSTRES HELADOS"}) 
    Dim messageStrings As New List(Of String)() 

    If (txt_nombre_plato.Text = "") Then 
     messageStrings.Add("Completa el Nombre del Platillo") 
    End If 

    If subCategoriaPlatoList.Contains(txt_combo_sub_categoria_plato.Text) Then 
     messageStrings.Add("Selecciona Sub-Categoria del Platillo") 
    End If 

    If (txt_descripcion_plato.Text = "") Then 
     messageStrings.Add("Coloca la descripción del Platillo") 
    End If 

    If (txt_precio_plato.Text = "") Then 
     messageStrings.Add("Coloca el precio del Platillo") 
    End If 

    If (inflater_imagen = "") Then 
     messageStrings.Add("Selecciona la imagen del Platillo") 
    End If 

    If (chk_estado_contorno.Checked) And Lista_contorno.Items.Count = 0 Then 
     MsgBox("Debes Agregar el contorno del Platillo", "Info") 
    End If 

    valida_blanco = messageStrings.Count = 0 
    Dim message = String.Join(Environment.NewLine, messageStrings.ToArray()) 
    MsgBox(message) 
+0

@marc ид нравится принимать как ответ хеха, спасибо Logical, это по крайней мере очищает беспорядок немного больше. –

2

Вы можете сделать это без каких-либо дополнительных условий. Таким образом, вы также можете отобразить все ошибки сразу, что я считаю более удобным для пользователя:

Dim errors As New List(Of String)() 

If txt_nombre_plato.Text = "" Then 
    errors.Add("Completa el Nombre del Platillo") 
End If 

If (txt_combo_sub_categoria_plato.Text = "CARNES") Or (txt_combo_sub_categoria_plato.Text = "MARISCOS") Or (txt_combo_sub_categoria_plato.Text = "PESCADOR") Or (txt_combo_sub_categoria_plato.Text = "PASTAS") Or (txt_combo_sub_categoria_plato.Text = "PIZZAS") Or (txt_combo_sub_categoria_plato.Text = "HAMBRUGESAS") Or (txt_combo_sub_categoria_plato.Text = "SOPAS") Or (txt_combo_sub_categoria_plato.Text = "BEBIDAS ALCOHOLICAS") Or (txt_combo_sub_categoria_plato.Text = "BEBIDAS SIN ALCOHOL") Or (txt_combo_sub_categoria_plato.Text = "POSTRES TORTAS") Or (txt_combo_sub_categoria_plato.Text = "MPOSTRES HELADOS") Then 
    errors.Add("Selecciona Sub-Categoria del Platillo") 
End If 

If txt_descripcion_plato.Text = "" Then 
    errors.Add("Coloca la descripción del Platillo") 
End If 

' etc... 

valida_blanco = errors.Count = 0 
MsgBox([String].Join(Environment.NewLine, errors)) 
Смежные вопросы