2016-11-11 5 views
0

Ich möchte wissen, wie man Fehler mit Tag verursacht. Ich habe Code in VB.Net, aber ich weiß nicht, es in C# umzuwandeln.Fehler bei der Verwendung der Tag-Eigenschaft C#

Szenario: Die textbox_qty akzeptiert nur ganze Zahlen. Wenn der Benutzer ein nicht numerisches Zeichen eingibt, zeigt es Tag Eigenschaft, die Invalid Characters besagt.

Dies ist der Code, den ich in VB.Net verwendet habe. Ich benutze das, wenn das für null Felder hat.

Private Function ValidField(ByVal ParamArray ctl() As Object) As Boolean 
    For i As Integer = 0 To UBound(ctl) 
     If ctl(i).Text = "" Then 
      Error_reg.SetError(ctl(i), ctl(i).tag) 
      Return False 
      Exit Function 
     End If 
    Next 
    Return True 
End Function 

    If ValidField(TextBox_userName, TextBox_password, TextBox_retypePassword, TextBox_lastName, TextBox_firstName, ComboxBox_group, ComboBox_question, TextBox_answer) = False Then 
    Exit Sub 

Wenn dieser Code nicht funktioniert? Gibt es einen anderen Code, der Fehler in Tag Eigenschaft zeigen kann, ohne meinen VB.Net-Code zu C# zu konvertieren?

Vielen Dank für Ihre Hilfe!

+0

Zeigen Sie uns Ihr Versuch, den Code zu konvertieren. Welche Probleme haben Sie dabei festgestellt? –

Antwort

0

Es kann sich lohnen, in die Information Class einzusteigen, es hat Methoden zur Validierung von Objekten. Obwohl es sich um eine VisualBasic-Klasse handelt, kann sie dennoch in C# verwendet werden, was einer der Hauptvorteile von .Net Framework ist.

In Visual Basic müssen Sie keine Referenzen zu Ihrem Projekt hinzufügen.

Wenn Sie die Information Class in C# verwenden, stellen Sie sicher, einen Verweis auf Microsoft.VisualBasic in einem Projekt hinzuzufügen, dann using Microsoft.VisualBasic; der Klasse oder ein Modul hinzufügen, die Sie den folgenden Code hinzufügen.

Sie können die Methode Information.IsNumeric verwenden, um eine numerische Eingabe zu validieren.

Beispiel VB.Net Code ...

Private Function ValidField(ByVal ParamArray ctl() As Object) As Boolean 
    For i As Integer = 0 To UBound(ctl) 
     Dim tB As TextBox = DirectCast(ctl(i),TextBox) 
     If Not IsNumeric(tB.Text) Then 
      Error_reg.SetError(tB, tB.Tag) 
      Return False 
     End If 
    Next 
    Return True 
End Function 

Beispiel C# -Code ...

private bool ValidField(params object[] ctl) 
{ 
    for (int i = 0; i <= Information.UBound(ctl); i++) { 
     TextBox tB = (TextBox)ctl[i]; 
     if (!Information.IsNumeric(tB.Text)) { 
      Error_reg.SetError(tB, tB.Tag); 
      return false; 
     } 
    } 
    return true; 
} 

die auch Exit Function nach der Return-Anweisung ist nicht erforderlich, die Funktion automatisch mit den Ausfahrten zurück Ergebnis.

+0

Sir! @ fütemire Ich habe einen Fehler sagt: 'Informationen nicht im aktuellen Kontext '. Welchen Namensraum sollte ich verwenden? –

+0

Danke Sir @ fütemire. Entschuldige dich nicht, ich glaube nicht, dass ich dein Entschuldigen verdiene. –

+0

Sir! @@ ftemire Ich habe einen Fehler bekommen. 'if (! Information.IsNumeric (ctl (i) .Text)) { Error_Null.SetError (ctl (i), ctl (i) .tag); Rückgabe false; } ' Alle' ctl' hat Fehler und es heißt, 'Methode Name erwartet ' –

0

Zuerst können Sie this Konverter verwenden, um VB-Code in C# umzuwandeln oder umgekehrt.

Zweitens bitte sagen Sie uns, wo ist "textbox_qty" Variable im Code? Unter der Annahme, dass es eines der Parameter auf „ValidField“ Funktion ist wie folgt:

ValidField(TextBox_userName, TextBox_password, TextBox_retypePassword, TextBox_lastName, TextBox_firstName, ComboxBox_group, ComboBox_question, TextBox_answer, textbox_qty) 

Dann Lösung wäre zu aktualisieren „ValidField“ wie folgt:

Private Function ValidField(ByVal ParamArray ctl() As Object) As Boolean 
    For i As Integer = 0 To UBound(ctl) 
     If ctl(i).Name = "textbox_qty" AndAlso Not IsNumeric(ctl(i).Text) Then 
      Error_reg.SetError(ctl(i), ctl(i).tag) 
      Return False 
      Exit Function 
     End If 
    Next 
    Return True 
End Function 
Verwandte Themen