C# 左键单击Silverlight文本框
我需要支持双击的TextBox,但在尝试编写代码时,我遇到了一个问题,Silverlight TextBox在单击文本区域内部时不会引发鼠标左键事件。那么,这里可能的解决方案是什么?我正在使用Silverlight 4。您应该创建一个自定义textbox控件,该控件继承默认的C# 左键单击Silverlight文本框,c#,silverlight,textbox,mouseclick-event,C#,Silverlight,Textbox,Mouseclick Event,我需要支持双击的TextBox,但在尝试编写代码时,我遇到了一个问题,Silverlight TextBox在单击文本区域内部时不会引发鼠标左键事件。那么,这里可能的解决方案是什么?我正在使用Silverlight 4。您应该创建一个自定义textbox控件,该控件继承默认的textbox,并重写OnMouseLeftButtonUp方法,如下所示: public class MyTextBox : TextBox { protected override void OnMouseLef
textbox
,并重写OnMouseLeftButtonUp
方法,如下所示:
public class MyTextBox : TextBox
{
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonUp(e);
// Do your stuff here
}
}
如果您需要处理双击,那么切换到Silverlight 5会更容易,它引入了点击计数的概念。以下是处理双击的教程:
基本上,您只需执行以下操作:
if(e.ClickCount == 2) {...}
编辑:以下是在Silverlight 4中的操作方法:
- 创建继承默认textbox类的自定义textbox并覆盖鼠标事件,如下所示:
- 在项目类中添加
- 在代码隐藏中,附加到双击事件:
你也许可以用这个作弊,尽管我自己没试过
- 更改文本框的模板,使其具有 IshittesVisible=真
- 在覆盖上设置双击事件李>
- 如果你发现一个 单击覆盖层,不做任何操作,让它冒泡通过
- 如果检测到双击,请设置的事件已处理
mousebuttoneventargs为true并执行双击操作
请注意,Silverlight4本机不支持双击,因此您必须想出一些方法来模拟这种情况。好吧,切换到新版本并不取决于我,但thx是解决方案,我想我会使用它。在SL4中,有一些方法可以处理双击,但它更粗糙。以下是您可以执行的操作:
public class DoubleClickTextBox : TextBox
{
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
// Do nothing
}
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
// Do nothing
}
}
DoubleClickExtender dce = new DoubleClickExtender(textBox, 300)
dce.DoubleClick += new MyEventHandler(dce_DoubleClick);