Как управлять активностью пунктов своего контекстного меню TextBox? - Visual Basic .NET
Формулировка задачи:
Всем здравствуйте.
Пытаюсь заменить встроенное контекстное меню TextBox на своё, включающее в том числе и стандартные пункты (Cut, Copy, Paste, Undo и Select All). Не получается управлять доступностью пунктов контекстного меню в зависимости от наличия выделенного фрагмента в TextBox. То есть, если в TextBox есть выделенный текст, то при вызове кликом по TextBox контекстного меню пункты Cut, Copy должны быть доступны, если выделенного текста нет - эти пункты должны быть недоступны. Для RightTextBox можно сделать так:
Но в TextBox события SelectionChanged нет. Как быть?
Решение задачи: «Как управлять активностью пунктов своего контекстного меню TextBox?»
textual
Листинг программы
Private Sub ContextMenuStrip1_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuStrip1.Opening If TextBox1.SelectedText <> "" Then ВырезатьToolStripMenuItem.Enabled = True КопироватьToolStripMenuItem.Enabled = True УдалитьToolStripMenuItem.Enabled = True Else ВырезатьToolStripMenuItem.Enabled = False КопироватьToolStripMenuItem.Enabled = False УдалитьToolStripMenuItem.Enabled = False End If If My.Computer.Clipboard.ContainsText = True Then ВставитьToolStripMenuItem.Enabled = True Else ВставитьToolStripMenuItem.Enabled = False End If End Sub Private Sub ВыделитьВсеToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВыделитьВсеToolStripMenuItem.Click For Each TB As TextBox In Me.Controls.OfType(Of TextBox)() If TB.Focused = True Then TB.SelectAll() End If Next End Sub Private Sub КопироватьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles КопироватьToolStripMenuItem.Click For Each TB As TextBox In Me.Controls.OfType(Of TextBox)() If TB.Focused = True Then My.Computer.Clipboard.SetText(TB.SelectedText) End If Next End Sub Private Sub УдалитьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles УдалитьToolStripMenuItem.Click For Each TB As TextBox In Me.Controls.OfType(Of TextBox)() If TB.Focused = True Then TB.SelectedText = "" End If Next End Sub Private Sub ВырезатьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВырезатьToolStripMenuItem.Click For Each TB As TextBox In Me.Controls.OfType(Of TextBox)() If TB.Focused = True Then My.Computer.Clipboard.SetText(TB.SelectedText) TB.SelectedText = "" End If Next End Sub Private Sub ВставитьToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ВставитьToolStripMenuItem.Click For Each TB As TextBox In Me.Controls.OfType(Of TextBox)() If TB.Focused = True Then TB.Paste(My.Computer.Clipboard.GetText) End If Next End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д