Добрый день. Хочу сделать программу, которая бы текстовые сокращения вида ":),:(" и так далее по нажатию по кнопке на форме переводила в смайлики. На саму форму для принятия входящих данных я добавил обычный textbox а вот для вывода уже самих смайликов у меня компонент RichTextBox. Набор смайликов у меня статический в том плане, что это просто картинки формата png. Скажу сразу, я уже пытался найти подобную информацию и нашел. Inserting Smiles
Но я не совсем понимаю, в какую часть кода, что помещать. Да и у меня немного другие требования. Именно после клика по кнопке, что бы проводилась подобная замена и помещалась в RichEditBox.
Добрый вечер, на самом деле в том примере, что вы оставили ссылкой имеется весь необходимый код для реализации вашей цели. Прочитав ваши требования я составил небольшую форму
После взяв исходный код из примера немного его подправил и получил необходимый результат. Логика здесь такова: весь текст из textBox1 перенёс в richTextBox1, далее уже в самом richTextBox1 производится замена символов на картинки(смайлы), так же можно очистить textBox1, но это на ваше усмотрение.
Надеюсь это удовлетворит ваши требования.Весь код оставлю ниже. Задавай вопросы, постараюсь ответить.
private void add_smileys(TextBox tb,RichTextBox rtb)
{
var smileys = new Dictionary<string, Image>()
{
{ @":)", Resources.in_smile },
{ @">:(", Resources.in_angry },
};
//Изменения здесь. Очищаем поле richTextBox1 перед его использованием
richTextBox1.Text = null;
//Вставляем текст из textBox1 в richTextBox1
rtb.Text = tb.Text;
foreach (var smiley in smileys)
{
add_smiley(rtb, smiley.Key, smiley.Value);
}
}
private void add_smiley(RichTextBox rtb, string token, Image smiley)
{
while (true)
{
var selectionStart = rtb.Find(token, RichTextBoxFinds.WholeWord);
if (selectionStart < 0) break;
try
{
rtb.SelectionStart = selectionStart;
rtb.SelectionLength = token.Length;
Clipboard.SetImage(smiley);
rtb.Paste();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
break;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
add_smileys(textBox1,richTextBox1);
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости