Как управлять активностью пунктов своего контекстного меню 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

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


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

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

9   голосов , оценка 4.222 из 5
Похожие ответы