Rehan Manzoor
Rehan Manzoor

Reputation: 2743

how to add emoticons to richtextbox

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace abc
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    EmoticonRender ab = new EmoticonRender();
    private void button1_Click(object sender, EventArgs e)
    {
        string textie = ab.Parse(textBox1.Text);
        richTextBox1.Text += textie+"\n";
    }
}
public class EmoticonRender
{

    private List<KeyValuePair<string, string>> _dictionary = new List<KeyValuePair<string, string>>() 
    {
    new KeyValuePair<string, string>(":-)", "a.png"),
    new KeyValuePair<string, string>(";-(", "a.png"),
    };

    public string Parse(string text)
    {
    foreach(KeyValuePair<string, string> kvp in _dictionary)
    {
    text = text.Replace(kvp.Key, @"C:\Users\Buddiez\Documents\Visual Studio 2010\Projects\abc\abc\a.png");
    }
    return text;
    }

}

}

im using these line of codes to insert smilyes into richtextbox but instead of showing smileye it is showing the path of the png imgae ie. C:\Users\Buddiez\Documents\Visual Studio 2010\Projects\abc\abc\a.png

Upvotes: 7

Views: 8935

Answers (2)

Yoav Feuerstein
Yoav Feuerstein

Reputation: 1975

A good (and relatively new) solution could be using the open-source EmojiBox project.

There's not much code there so it's quite easy to follow, just note that in order to insert an emoji into the custom RichTextBox there, the text you type has to follow the template of :emoji_name:

Of course, if you don't want to use the whole list of unicode emojis, you could also replace the image files or their names/descriptions within the json file.

Upvotes: 1

Dot_NET Pro
Dot_NET Pro

Reputation: 2123

Copy all the images which you have and navigate to >> visual studio select Project>>Properties.There select Resources and paste all copied images on the right side pane.

    Hashtable emotions;
    void CreateEmotions()
    {
        emotions= new Hashtable(6);
        emotions.Add(":-)", Project.Properties.Resources.regular_smile);
        emotions.Add(":)",  Project.Properties.Resources.regular_smile);

    }

    void AddEmotions()
    {
        foreach (string emote in emotions.Keys)
        {
            while(richTextBox1.Text.Contains(emote))
            {
                int ind = richTextBox1.Text.IndexOf(emote);
                richTextBox1.Select(ind, emote.Length);
                Clipboard.SetImage((Image)emotions[emote]);
                richTextBox1.Paste();
            }
        }
    }

Upvotes: 1

Related Questions