我正在使用visual c#创建一个Windows聊天应用程序,我希望chatDisplay富文本框中的所有:)单词被替换为位于resources文件夹中的笑脸图像。 这是我的代码:
private void add_smileys()
{
if (chatDisplay.Text.Contains(":)"))
{
chatDisplay.SelectionStart = chatDisplay.Find(":)", RichTextBoxFinds.WholeWord);
chatDisplay.SelectionLength = 2;
String image = System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "Resources/smile.png");
Image img = Image.FromFile(image);
Clipboard.SetImage(img);
chatDisplay.Paste();
Console.WriteLine("All images replaced");
}
}
我没有收到任何错误,也没有收到“找不到文件”错误,并且正确地在控制台中输出“所有已替换的图像”中心。唯一错误的是文本框中的:)短语不会被图像替换。有人能帮我吗?我的代码出了什么问题?
答案 0 :(得分:0)
此处为单个表情符号的示例代码:)您可以根据需要为所有表情符号扩展它。
private void richTextBoxOutput_TextChanged(object sender, EventArgs e)
{
UpdateEmoticon();
}
private void UpdateEmoticon(int startIndex = 0)
{
const string smileKey = ":)";
const int smileKeyLen = 2;
DataFormats.Format myFormat = DataFormats.GetFormat(DataFormats.Bitmap);
var index = richTextBoxOutput.Find(smileKey, startIndex, RichTextBoxFinds.None);
if (index == -1)
return;
richTextBoxOutput.Select(index, smileKeyLen);
using (var bmp = new Bitmap(Resources.smile))
{
Clipboard.SetDataObject(bmp);
if (richTextBoxOutput.CanPaste(myFormat))
{
richTextBoxOutput.Paste(myFormat);
}
}
UpdateEmoticon(startIndex + smileKeyLen);
}