用笑脸图像替换“:)”不起作用

时间:2015-02-19 21:56:45

标签: c#

我正在使用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");
    }
}

我没有收到任何错误,也没有收到“找不到文件”错误,并且正确地在控制台中输出“所有已替换的图像”中心。唯一错误的是文本框中的:)短语不会被图像替换。有人能帮我吗?我的代码出了什么问题?

1 个答案:

答案 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);
}