Как управлять активностью пунктов своего контекстного меню TextBox? - Visual Basic .NET
Формулировка задачи:
Всем здравствуйте.
Пытаюсь заменить встроенное контекстное меню TextBox на своё, включающее в том числе и стандартные пункты (Cut, Copy, Paste, Undo и Select All). Не получается управлять доступностью пунктов контекстного меню в зависимости от наличия выделенного фрагмента в TextBox. То есть, если в TextBox есть выделенный текст, то при вызове кликом по TextBox контекстного меню пункты Cut, Copy должны быть доступны, если выделенного текста нет - эти пункты должны быть недоступны. Для RightTextBox можно сделать так:
Но в TextBox события SelectionChanged нет. Как быть?
Листинг программы
- Private Sub rtbEdit_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rtbEdit.SelectionChanged
- If rtbEdit.SelectionLength > 0 Then
- ctmRTBEditCut.Enabled = True
- ctmRTBEditCopy.Enabled = True
- Else
- ctmRTBEditCut.Enabled = False
- ctmRTBEditCopy.Enabled = False
- End If
- If Clipboard.ContainsText() Then
- ctmRTBEditPaste.Enabled = True
- End If
- End Sub
Решение задачи: «Как управлять активностью пунктов своего контекстного меню 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д