简体   繁体   中英

converting a vb.net code snippet to c#

Visual Studio 2005.

I was converting some of my source code to C#.

However, when I was doing the code snippet below, I noticed I don't have the IsNumber method.

Why is the IsNumber missing? I wanted to use it so that I can force a user to enter only numbers.

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar.IsNumber(e.KeyChar) = False Then
            e.Handled = True
        End If
End Sub

Many thanks for any suggestions,

use the static char.IsNumber() :

char.IsNumber(e.KeyChar);

By the way, I think you want to use char.IsDigit() instead. This comes from the MSDN site:

IsNumber() determines if a Char is of any numeric Unicode category. This contrasts with IsDigit() , which determines if a Char is a radix-10 digit.

In other words, IsNumber() also returns true for non-western numbers like 六 (Chinese '6').

C# is more strict in allowing you to call shared members on an instance variable.

Your original code gives me a warning in VB.

Warning 1 Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated.

In C# - it's just not allowed. Your solution to use char.IsNumber is the way to go; and that code will work the same in either language.

public class Example1
{
    public static int Test() { return 0; }

    public Example1()
    {
        this.Test();  // This doesn't work
        Example1.Test();  // This does
    }
}

Solved.

Used the following:

    if (char.IsNumber(e.KeyChar) == false)
    {
        e.Handled = true;
    }

we normally use developer fusion to convert code from vb.net to c# and vice-versa. you can also try it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM