单击Silverlight TextBox的左键单击

时间:2012-07-24 12:04:19

标签: c# silverlight textbox mouseclick-event

我需要支持双击的TextBox,但在尝试编码时,我遇到了一个问题,即如果我在文本区域内单击,Silverlight文本框不会引发左键鼠标事件。那么这里可能有哪些解决方案?我正在使用Silverlight 4。

2 个答案:

答案 0 :(得分:2)

您应该创建一个继承自默认TextBox的自定义文本框控件,并覆盖OnMouseLeftButtonUp方法,如下所示:

public class MyTextBox : TextBox
{
    protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
    {
        base.OnMouseLeftButtonUp(e);
        // Do your stuff here
    }
}

如果您需要处理双击,那么切换到引入了点击次数概念的Silverlight 5会更容易。以下是处理双击的教程:http://www.silverlighthostingnews.com/index.php/archives/440 基本上你只需要这样做:

if(e.ClickCount == 2) {...}

编辑:以下是Silverlight 4中的操作方法:

  • 创建继承默认TextBox类的自定义文本框,并覆盖鼠标事件,如下所示:

-

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);

答案 1 :(得分:0)

你可能会欺骗这个,虽然我自己没有尝试过这个

  • 更改文本框的模板以使其具有透明覆盖 是IsHitTestVisible = true
  • 在叠加层上设置双击事件。
  • 如果你发现了一个 点击叠加层,不做任何事情,让它冒泡通过
  • 如果您检测到双击,请设置处理的事件 mousebuttoneventargs为true并执行双击操作

请注意,本机不支持双击Silverlight4,因此您必须采用某种方式来模拟它。