2013-04-30 61 views
6
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; 
    } 

} 

}如何添加表情符号使用这些线路的代码插入到smilyes RichTextBox的到的RichTextBox

IM但不是表示smileye它显示的PNG imgae即路径。 C:\ Users \ Buddiez \ Documents \ Visual Studio 2010 \ Projects \ abc \ abc \ a.png

+0

可能的重复[如何将图像插入RichTextBox?](http://stackoverflow.com/questions/542850/how-can-i-insert-an-image-into-a-richtextbox) – 2013-05-13 08:57:28

+0

我喜欢那个键:) – nawfal 2013-06-18 10:18:38

+0

任何运气兄弟? – zzlalani 2013-08-01 07:55:32

回答

1

复制您拥有的所有图像并导航到>> visual studio选择Project >> Properties.There选择Resources将所有复制的图像粘贴到右侧窗格上。

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(); 
      } 
     } 
    } 
+0

后搜索堆栈溢出和其他网站这是最好的解决方案。效果很好。谢谢。 – jonathana 2017-05-31 05:08:32

1

一个好的(也是相对较新的)解决方案可以使用开源的EmojiBox项目。

没有太多的代码有那么这是很容易做到,只要注意,为了插入表情符号到自定义的RichTextBox那里,你键入的文本必须遵循的模板:emoji_name:

当然,如果你不想使用整个unicode emojis列表,你也可以在json文件中替换图像文件或它们的名称/描述。