Как выбрать / скопировать текст из строкового элемента «Графика» в WinForms - PullRequest
0 голосов
/ 31 октября 2019

В настоящее время я работаю над окном чата и создал плитки для сообщений.

enter image description here

У меня проблема, потому что текст в плитках рисуется с использованиемметод DrawString, и я не совсем уверен, существует ли такая вероятность, что этот текст можно скопировать? Как это может позволить пользователю выбирать и копировать текст? Ниже приведена часть исходного кода.

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    var graphics = e.Graphics;
    ...
    using (SolidBrush brush = new SolidBrush(this.ForeColor))
    {
         if (_BoxPosition == BoxPositionEnum.Left)
         {
             graphics.DrawString(Text, Font, brush, new Rectangle(20 , Height / 2, renderWidth - 5, Height / 2 - 5));
         }
         else
         {
             StringFormat format = new StringFormat()
             {
                  LineAlignment = StringAlignment.Center,
                  Alignment = StringAlignment.Far
             };
             graphics.DrawString(Text, Font, brush,
                            new Rectangle(_mc.BoxIndent - 10 , Height / 2, renderWidth - 5, Height / 2 - 5),format);
         }
}

1 Ответ

0 голосов
/ 31 октября 2019
  • Для простоты: просто используйте TextBox или RichTextBox и установите ReadOnly = true и цвет, как вам нужно.
  • Для более сложных: создайте свой собственный пользовательский элемент управления окном сообщений, и выс этим можно многое сделать (отреагировать, выбрать все, ...). Вот учебник для создания собственного пользовательского элемента управления: https://www.c -sharpcorner.com / UploadFile / 7d3362 / user-control-in-C-Sharp /
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...