首页 > 解决方案 > 如何使用 2 个字符串在 TreeView 节点中显示图标?

问题描述

如果我有一个带有 Segoa UI Emoji 字体的 TreeView。我需要使用 2 个字符串设置 TreeView 节点图标,但不起作用。unicodeEndStr另外,如果 unicode 只有 4 位数字,我可以为下面的变量使用什么值2639

// This code shows emoji icon in treeview node followed by a space and some text
string emoji = "\U0001F608" + " " + "Face Savoring Food";
EmojiTreeView.Nodes.Add(emoji);

// This code does not show emoji icon, just \U0001F608 followed by a space and some text
string unicodeStartStr = "\\U000"; // need double back slashes to compile
string unicodeEndStr = "1F608";
string emojiCodeStr = unicodeStartStr + unicodeEndStr;
string emojiStr = emojiCodeStr + " " + "Face Savoring Food";
EmojiTreeView.Nodes.Add(emojiStr); 

标签: c#treeview

解决方案


首先将您的组合 Unicode 字符串解析为十六进制(16 位)数字。然后使用 char.ConverFromUtf32(str).ToString() 生成完整的 Unicode 符号。

参考解决方案:动态生成 8-Digit-Unicode to Character

public Form1()
{
           InitializeComponent();
           treeView1.Nodes.Add("\U0001F608" + " " + "Face Savoring Food");

           // remove \u prefix
           string unicodeStartStr = "000";  
           string unicodeEndStr = "1F608";
           string emojiCodeStr = unicodeStartStr + unicodeEndStr;
           int value = int.Parse(emojiCodeStr, System.Globalization.NumberStyles.HexNumber);
           string result = char.ConvertFromUtf32(value).ToString();
           string emojiStr = result + " " + "Face Savoring Food";
           treeView1.Nodes.Add(emojiStr);
}

工作结果


推荐阅读