Itamarc101 Ответов: 2

C# как добавить смайлики в richtextbox, winform


Hashtable emotions;
         private void CreateEmotions()
         {
             emotions = new Hashtable(12);
             emotions.Add(@":)", Properties.Resources.ThumbsUp1);
             emotions.Add(@"0)", Properties.Resources.AngelSmile1);
             emotions.Add(@":(", Properties.Resources.CrySmile1);
             emotions.Add(@":X", Properties.Resources.AngrySmile1);
             emotions.Add(@"XX", Properties.Resources.DevilSmile); 
         }
      
         private void AddEmotions(Hashtable emotions)
         {
             foreach (string emote in emotions.Keys)
                 while (txtLoad.Text.Contains(emote))
                 {
                     int ind = txtLoad.Text.IndexOf(emote);
                     txtLoad.Select(ind, emote.Length);
                     Clipboard.SetImage((Image)emotions[emote]);
                     txtLoad.Paste();
                 }
         }



Я использую эти строки кода для вставки смайликов в мой richtextbox, но когда я отправляю сообщение, оно показывает то, что я печатаю, а не изображение.

if (msgReceived.strMessage != null && msgReceived.cmdCommand !=Command.List)
               txtLoad.Text += msgReceived.strMessage + "\r\n";    


Этот код задает текст richtextbox, добавляет сообщения, набранные пользователями.

Что я уже пробовал:

Ищу справку в интернете и другие примеры...

2 Ответов

Рейтинг:
2

ahmed9100

Просто измените TextBox на RichTextBox это будет работать


CHill60

OP уже пытается использовать RichTextBox - внимательно прочитайте вопрос.

Рейтинг:
16

George Jonsson

Не знаю, сколько вы действительно искали, потому что эту статью было достаточно легко найти.

Вставка обычного текста и изображений в RichTextBox во время выполнения[^]

Я думаю, что это то, что вы ищете.


Itamarc101

Я пробовал, что у него просто есть некоторые ошибки...

George Jonsson

Ну, вы должны были упомянуть эту статью в разделе "Что я пробовал".

А что такое "некоторые ошибки"? Может быть, ты сможешь что-нибудь исправить?

Itamarc101

Теперь я изменил код и использую его.
Хэш-таблица эмоций;
частные пустотные CreateEmotions()
{
эмоции = новая хэш-таблица(5);
эмоции.добавить(":)", свойства.Ресурсы.ThumbsUp1);
эмоции.добавить("0)", свойства.Ресурсы.AngelSmile1);
эмоции.добавьте(":(", свойства.Ресурсы.CrySmile1);
эмоции.добавить(":X", свойства.Ресурсы.AngrySmile1);
эмоции.добавить ("XX", свойства.Ресурсы.DevilSmile);

}

частный недействительными AddEmotions(хеш-таблица эмоций)
{
по каждому элементу (строка эмоция на эмоции.Ключи)
пока (txtLoad.Текст.Содержит(эмоция))
{
инт Инд = txtLoad.Текст.Метод indexOf(эмоция);
txtLoad.Выберите(Инд эмоции.Длина);
Буфер обмена.SetImage((изображение)эмоции[эмоция]);
txtLoad.Вставить();
}
}

Я добавил Все изображения в ресурс (в свойствах)
https://i.gyazo.com/8d127e848698c9b0786825f5b179f0af.png

И это не работает, просто показывает те же самые буквы, которые я печатаю.
https://i.gyazo.com/e3f7be8a37675d9e22391a08940ecbf8.png

Вот команда, которая выводит обычное сообщение на элементе управления richtextbox:

если (msgReceived.strMessage != нуль &амп;&амп; msgReceived.cmdCommand != Команду.Список)
{
txtLoad.Текст += msgReceived.strMessage + "\р\н";

}
txtLoad - это текстовое поле.
- Что случилось?

George Jonsson

У тебя вроде как неправильный подход.
Изучите статью, загрузите код и попробуйте его.
У него есть рабочая демонстрация, на которой вы можете учиться.

Itamarc101

Я постараюсь сделать все возможное, чтобы сделать это сегодня.

Itamarc101

Я пытался выучить все, что у него есть, просто слишком много вещей, и я где-то заблудился в коде.

Itamarc101

Еще две фотографии:
https://gyazo.com/82d8ade2bc17b7913fb057b063bb3e1e

https://gyazo.com/b7eec6f09cc4b96ab091579c687d0e87

Sergey Alexandrovich Kryukov

Да, это решение, 5.
—СА

George Jonsson

Ну, по крайней мере, это один из способов сделать это.
Спасибо, Сергей.

Itamarc101

Какое решение? что за 5?
Не могли бы вы объяснить, пожалуйста?

George Jonsson

Решение, на которое он ссылается, - это статья, которую я связал в своем ответе.
Что касается 5; Вы вверх или вниз голосуете за ответ с помощью звезд, которые видите в верхнем левом углу. 1 - самый низкий, а 5-самый высокий.

Sergey Alexandrovich Kryukov

Что, ты не думаешь, что это решение твоей проблемы?
Я предлагаю вам убедиться, что это так, и даже принять его формально. Видите ли вы кнопку "Принять"? :-)
—СА

Itamarc101

Я обновил вопрос, все еще ища дополнительной помощи.

Itamarc101

Все еще ищу дополнительную помощь, пожалуйста, это срочно.

Itamarc101

Srill ищет дополнительную помощь/решения