Как управлять активностью пунктов своего контекстного меню TextBox? - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всем здравствуйте. Пытаюсь заменить встроенное контекстное меню TextBox на своё, включающее в том числе и стандартные пункты (Cut, Copy, Paste, Undo и Select All). Не получается управлять доступностью пунктов контекстного меню в зависимости от наличия выделенного фрагмента в TextBox. То есть, если в TextBox есть выделенный текст, то при вызове кликом по TextBox контекстного меню пункты Cut, Copy должны быть доступны, если выделенного текста нет - эти пункты должны быть недоступны. Для RightTextBox можно сделать так:
Листинг программы
  1. Private Sub rtbEdit_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rtbEdit.SelectionChanged
  2. If rtbEdit.SelectionLength > 0 Then
  3. ctmRTBEditCut.Enabled = True
  4. ctmRTBEditCopy.Enabled = True
  5. Else
  6. ctmRTBEditCut.Enabled = False
  7. ctmRTBEditCopy.Enabled = False
  8. End If
  9. If Clipboard.ContainsText() Then
  10. ctmRTBEditPaste.Enabled = True
  11. End If
  12. End Sub
Но в TextBox события SelectionChanged нет. Как быть?

Решение задачи: «Как управлять активностью пунктов своего контекстного меню TextBox?»

textual
Листинг программы
  1.  Private Sub ContextMenuStrip1_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuStrip1.Opening
  2.         If TextBox1.SelectedText <> "" Then
  3.             ВырезатьToolStripMenuItem.Enabled = True
  4.             КопироватьToolStripMenuItem.Enabled = True
  5.             УдалитьToolStripMenuItem.Enabled = True
  6.         Else
  7.             ВырезатьToolStripMenuItem.Enabled = False
  8.             КопироватьToolStripMenuItem.Enabled = False
  9.             УдалитьToolStripMenuItem.Enabled = False
  10.         End If
  11.         If My.Computer.Clipboard.ContainsText = True Then
  12.             ВставитьToolStripMenuItem.Enabled = True
  13.         Else
  14.             ВставитьToolStripMenuItem.Enabled = False
  15.         End If
  16.  
  17.     End Sub
  18.  
  19.     Private Sub ВыделитьВсеToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВыделитьВсеToolStripMenuItem.Click
  20.         For Each TB As TextBox In Me.Controls.OfType(Of TextBox)()
  21.             If TB.Focused = True Then
  22.                 TB.SelectAll()
  23.             End If
  24.         Next
  25.     End Sub
  26.  
  27.     Private Sub КопироватьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles КопироватьToolStripMenuItem.Click
  28.  
  29.         For Each TB As TextBox In Me.Controls.OfType(Of TextBox)()
  30.             If TB.Focused = True Then
  31.                 My.Computer.Clipboard.SetText(TB.SelectedText)
  32.             End If
  33.         Next
  34.  
  35.     End Sub
  36.  
  37.     Private Sub УдалитьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles УдалитьToolStripMenuItem.Click
  38.         For Each TB As TextBox In Me.Controls.OfType(Of TextBox)()
  39.             If TB.Focused = True Then
  40.                 TB.SelectedText = ""
  41.             End If
  42.         Next
  43.  
  44.     End Sub
  45.  
  46.     Private Sub ВырезатьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВырезатьToolStripMenuItem.Click
  47.         For Each TB As TextBox In Me.Controls.OfType(Of TextBox)()
  48.             If TB.Focused = True Then
  49.                 My.Computer.Clipboard.SetText(TB.SelectedText)
  50.                 TB.SelectedText = ""
  51.             End If
  52.         Next
  53.     End Sub
  54.  
  55.     Private Sub ВставитьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВставитьToolStripMenuItem.Click
  56.         For Each TB As TextBox In Me.Controls.OfType(Of TextBox)()
  57.             If TB.Focused = True Then
  58.                 TB.Paste(My.Computer.Clipboard.GetText)
  59.             End If
  60.         Next
  61.     End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы