Визуализация значения по ключу - C#
Формулировка задачи:
Доброго времени суток, друзья. Пишу небольшую программку по анализу текстов, задача состоит в том, чтобы в введенном пользователем тексте, при наведении(или нажатии, это уж как мы сейчас решим) мышкой на слово, рядом с ним всплывало окошко с информацией о слове. Каждое слово в тексте во время его обработки представляется в виде ключа в словаре, значениями которого как раз таки и служит эта информация, которую необходимо вывести.
Вопрос заключается в следующем, возможно ли как-то сделать так, чтобы по щелчку на слово, программа понимала, какое значение выделяется?
Решение задачи: «Визуализация значения по ключу»
textual
Листинг программы
- class MainForm : Form
- {
- private Dictionary<string, string> _wordInfo = new Dictionary<string, string>(StringComparer.Ordinal);
- public MainForm()
- {
- var tb = new TextBox();
- tb.Multiline = true;
- tb.Location = new Point(10, 10);
- tb.Width = 300;
- tb.Height = 300;
- Controls.Add(tb);
- Width = 340;
- Height = 360;
- tb.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom;
- PopulateDictionary();
- ToolTip tool = null;
- tb.Click += (s, a) =>
- {
- tool?.Dispose();
- var args = (MouseEventArgs)a;
- int index = tb.GetCharIndexFromPosition(args.Location);
- if (args.Location.Y > tb.GetPositionFromCharIndex(index).Y + tb.Font.Height)
- return;
- var word = GetWord(tb.Text, index);
- if (word != null && _wordInfo.ContainsKey(word.ToUpper()))
- {
- tool = new ToolTip();
- tool.IsBalloon = true;
- tool.Show(word + " - " + _wordInfo[word.ToUpper()], this, args.Location);
- }
- };
- }
- private string GetWord(string text, int index)
- {
- if (index < 0 || index >= text.Length)
- return null;
- int left = index;
- while (left >= 0 && char.IsLetter(text[left]))
- left--;
- int right = index;
- while (right < text.Length && char.IsLetter(text[right]))
- right++;
- if (left == right)
- return null;
- else
- return text.Substring(left + 1, right - left - 1);
- }
- private void PopulateDictionary()
- {
- _wordInfo["Картошка".ToUpper()] = "белорусский овощ";
- _wordInfo["Авокадо".ToUpper()] = "заморская хрень";
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д