Je peux utiliser le Alt Tapez avec le pavé numérique pour taper des symboles, mais comment puis-je insérer par programme un symbole (livre, euro, droit d'auteur) dans une zone de texte?
J'ai un écran de configuration, j'ai donc besoin de créer dynamiquement les\uXXXX.
En C #, le littéral de caractère Unicode \uXXXX
Où les X
sont des caractères hexadécimaux vous permettra de spécifier des caractères Unicode. Par exemple:
\u00A3
Est le signe dièse, £.\u20AC
Est le signe Euro, €.\u00A9
Est le symbole du copyright, ©.Vous pouvez utiliser ces littéraux de caractères Unicode comme tout autre caractère dans une chaîne.
Par exemple, "15 \u00A3 per item"
Serait la chaîne "15 £ par article".
Vous pouvez placer une telle chaîne dans une zone de texte comme vous le feriez avec n'importe quelle autre chaîne.
Remarque: Vous pouvez également simplement copier (Ctrl+C) un symbole hors d'un site Web, comme Wikipedia (signe dièse) , puis collez (Ctrl+V) directement dans un littéral de chaîne dans votre fichier de code source C #. Les fichiers de code source C # utilisent Unicode en mode natif. Cette approche vous évite complètement d'avoir à connaître les quatre chiffres hexadécimaux du symbole que vous souhaitez.
Pour mettre en parallèle l'exemple ci-dessus, vous pouvez rendre la même chaîne littérale que simplement "15 £ per item"
.
Modifier: Si vous voulez dynamiquement créer le caractère Unicode à partir de sa chaîne hexadécimale, vous pouvez utiliser ceci:
public static char HexToChar(string hex)
{
return (char)ushort.Parse(hex, System.Globalization.NumberStyles.HexNumber);
}
Par exemple, HexToChar("20AC")
vous donnera le signe Euro.
Si vous souhaitez effectuer l'opération inverse de manière dynamique:
public static string CharToHex(char c)
{
return ((ushort)c).ToString("X4");
}
Par exemple CharToHex('€')
vous obtiendrez "20AC"
.
Le choix de ushort
correspond à la plage de valeurs char
possibles, indiquée ici .
Je ne peux pas croire que c'était difficile à trouver sur Internet!
Pour les futurs développeurs, si vous avez le caractère unicode, c'est facile à faire. par exemple:
C #:
var selectionIndex = txt.SelectionStart;
string copyrightUnicode = "00A9";
int value = int.Parse(copyrightUnicode, System.Globalization.NumberStyles.HexNumber);
string symbol = char.ConvertFromUtf32(value).ToString();
txt.Text = txt.Text.Insert(selectionIndex, symbol);
txt.SelectionStart = selectionIndex + symbol.Length;
VB.Net
Dim selectionIndex = txt.SelectionStart
Dim copyrightUnicode As String = "00A9"
Dim value As Integer = Integer.Parse(copyrightUnicode, System.Globalization.NumberStyles.HexNumber)
Dim symbol As String = Char.ConvertFromUtf32(value).ToString()
txt.Text = txt.Text.Insert(selectionIndex, symbol)
txt.SelectionStart = selectionIndex + symbol.Length