VB.NET 2008 では、次のステートメントを使用しました。
MyKeyChr = ChrW(e.KeyCode)
ここで、上記のステートメントを C# に変換したいと思います。
何か案は?
VB.NET 2008 では、次のステートメントを使用しました。
MyKeyChr = ChrW(e.KeyCode)
ここで、上記のステートメントを C# に変換したいと思います。
何か案は?
ChrW
C#の に相当する手っ取り早い方法は、単純に値を にキャストすることchar
です。
char MyKeyChr = (char)e.KeyCode;
より長くより表現力豊かなバージョンは、代わりに のような変換クラスの 1 つを使用することSystem.Text.ASCIIEncoding
です。
Microsoft.VisualBasic
または、名前空間をインポートすることで、C# で実際の VB.NET 関数を使用することもできます。ChrW
これは、内部のメソッドによって実行される特別なチェックのいくつかに依存している場合にのみ必要です。そのコードは次のようになります。
char MyKeyChr = Microsoft.VisualBasic.Strings.ChrW(e.KeyCode);
ただし、この場合、必要なものが正確に生成されるとは限りません (元のコードもそうではありませんでした)。列挙内のすべての値Keys
が ASCII 値であるとは限らないため、すべてを直接文字に変換できるわけではありません。特に、キャスティングなどKeys.NumPad1
。アル。tochar
は正しい値を生成しません。
C#に相当するものは次のようになります
var MyKeyChr = char.ConvertFromUtf32((int) e.KeyCode)
ただし、e.KeyCode
Unicode コードポイントが含まれていないため、この変換は無意味です。
コードを変換する最も文字通りの方法は、C# の VB.Net ランタイム関数を使用することです。
MyKeyChr = Microsoft.VisualBasic.Strings.ChrW(e.KeyCode);
VB.Net ランタイムへの依存を避けたい場合は、この縮小版を使用できます
MyKeyChr = Convert.ToChar((int) (e.KeyCode & 0xffff));
C# に相当するものは次のとおりChrW(&H[YourCharCode])
です。Strings.ChrW(0x[YourCharCode])
https://converter.telerik.com/を使用して、VB と C# の間で変換できます。