我正在尝试获取文本框keydown事件以捕获退格键按下事件。我有这个工作,添加一个覆盖文本框的类。我不知道该怎么做才能与文本框在用户控件中的类进行通信。
当用户输入文本框...说abcd或退格时,我需要更新usercontrol上的内容。让我们说我希望有一些东西可以显示文本框中有多少个字符。有人可以帮助我。这是我到目前为止所拥有的
Option Strict On
Imports System.Text.RegularExpressions
Partial Public Class Page
Inherits UserControl
Public Sub New()
InitializeComponent()
Dim textbox As New MyTextBox() With {.Width = 300, .Height = 100}
LayoutRoot.Children.Add(textbox)
End Sub
End Class
Public Class MyTextBox
Inherits TextBox
Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs)
MyBase.OnKeyDown(e)
If e.Key = Key.Back Then
e.Handled = True
MyBase.OnKeyDown(e)
ElseIf e.Key = Key.Delete Then
e.Handled = True
MyBase.OnKeyDown(e)
End If
End Sub
End Class
感谢 香农
答案 0 :(得分:2)
您不需要继承TextBox
来执行此操作。而是在UserControl
课程中为TextBox.TextChanged事件添加处理程序。调用此项时,事件的发件人应为您的TextBox
。然后,您可以从中获取文本并执行您需要执行的操作。
更新:根据评论,以下内容应该有效:
Partial Public Class Page
Inherits UserControl
Private TextBox1 as TextBox
Public Sub New()
InitializeComponent()
TextBox1 = New TextBox() With {.Width = 300, .Height = 100}
LayoutRoot.Children.Add(textbox)
End Sub
Private Sub OnTextChanged(sender as Object, e as TextChangedEventArgs) Handles TextBox1.TextChanged
If e.Key = Key.Back Then
e.Handled = True
ElseIf e.Key = Key.Delete Then
e.Handled = True
End If
End Sub
End Class
(我的VB有点生疏,因此事件处理程序语法可能不完全正确。)
基本想法是在TextBox
内UserControl
内的文字发生变化时收到通知。这样,您可以根据需要修改UserControl
的其他部分。
答案 1 :(得分:0)
你可能会想错路。由于您使用的是Silverlight,因此可以使用绑定表达式获取此信息。就像一个简单的例子,你说你想知道文本框中有多少个字符。您可以使用以下xaml实现此目的:
<TextBox x:Name="txtInput" />
<TextBlock Text="{Binding ElementName=txtInput, Path=Text.Length}" />