2011-02-09 2 views
0

У меня есть 3 текстовых блока, как узнать, какой текстовый ящик выбран в данный момент (с фокусом). Я ничего не могу придумать.Как узнать, какое текстовое поле выбрано?

Public Class Form1 
    Public activeTextBox As TextBox = CType(Me.ActiveControl, TextBox) 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     activeTextBox.Text = activeTextBox.Text & "This is text 1" 
    End Sub 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
     activeTextBox.Text = activeTextBox.Text & "This is the text 2" 
    End Sub 
End Class 

enter image description here

ответ

2

Я предполагаю, что это приложение, Windows Forms.

Этот similar question предлагает два возможных предложения:

Me.ActiveControl 

Или, вы можете написать метод с использованием Windows API, чтобы получить ручку управления, который в настоящее время имеет фокус. Пример: article на WindowsClient.Net.

Однако каждый из этих параметров будет работать, только если TextBox все еще имеет фокус во время вызова метода.

Внутри обработчика событий кнопки вы пытаетесь выяснить, кто был последним активным TextBox, чтобы что-то с ним сделать. В этой ситуации Me.ActiveControl не будет очень полезен, потому что элемент управления TextBox потеряет фокус, как только вы нажмете на кнопку. Пример кода ниже показывает, как вы могли бы использовать события Enter и Leave в TextBox, чтобы отслеживать, какой из последних был активен TextBox. Я предположил, что TextBox называется TextBox1.

 Public Class Form1 
      Public activeTextBox As TextBox 

Private Sub TextBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Enter, TextBox2.Enter, TextBox3.Enter 
    activeTextBox = CType(sender, TextBox) 
End Sub  

      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
       If (activeTextBox IsNot Nothing) Then 
       activeTextBox.Text = activeTextBox.Text & "This is text 1" 
End If 
      End Sub 

      Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 

       If (activeTextBox IsNot Nothing) Then 
       activeTextBox.Text = activeTextBox.Text & "This is the text 2" 
End If 
      End Sub 
    End Class 
+0

Я получаю сообщение об ошибке, когда пытаюсь его реализовать –

+0

Какая ошибка? Вы должны поместить код внутри метода или обработчика события. – Jazza

+0

Я поставил снимок экрана выше. –

Смежные вопросы