【发布时间】:2013-12-24 20:13:17
【问题描述】:
我正在创建一个 Custom Control 继承 TextBox,但是,因为 PreviewTextInput 和 TextInput 默认情况下在 TextBox 中不处理,我想实现一个 PreviewTextInputLinked 和 TextInputLinked 用于我的控制,只是开发人员可以使用+=和-=添加或删除这两个事件
我创建了一个名为 PreviewTextInputLinkedTextInputLinked
TextCompositionEventHandler
public event TextCompositionEventHandler /*PreviewTextInputLinked*/ TextInputLinked = delegate { };
public MyTextBox()
{
this.AddHandler(TextBox.PreviewTextInputEvent, /*PreviewTextInputLinked */TextInputLinked, true);
}
在 XAML 程序中
/*<UControls:MyTextBox VerticalAlignment="Top" AcceptLetters="9" Mask=""
Width="122"
PreviewTextInputLinked="MyTextBox_PreviewTextInputLinked"/>*/
<UControls:MyTextBox VerticalAlignment="Top" Width="122"
TextInputLinked="MyTextBox_TextInputLinked"/>
后面的代码
private void /*MyTextBox_PreviewTextInputLinked*/ MyTextBox_TextInputLinked(object sender,
TextCompositionEventArgs e)
{
MessageBox.Show("test");
}
但它什么也没做,也许我做错了,但我不知道我还能做什么
问题出在哪里?
【问题讨论】:
-
为什么不使用 TextBox
TextInput和PreviewTextInput? -
因为它们没有与TextBox“链接”,如果我直接使用this.TextInput += MyEvent;它不起作用,需要使用 AddHandler 才能工作,我想简化一下
-
我没听懂。如果我使用
<UControls:MyTextBox PreivewTextInput="MyTextBox_PreviewTextInput"/>。处理程序被正确调用。 -
哇!我现在试了一下,你是对的,PreviewTextInput 只需要使用默认事件,但是 TextInput 不能这样使用
-
那么,TextInput 能做到吗?