如何将click事件添加到在代码中创建的文本框中

时间:2010-05-17 20:09:33

标签: silverlight events textbox onclick

我正在使用silverlight 3,我想在后面的代码中创建的文本框中创建一个处理程序和事件。有人能指出我正确的方向。

我需要这样做才能在点击文本框时触发一些事情。

如果你在vb.net中有一个更好的例子。 谢谢 香农

3 个答案:

答案 0 :(得分:1)

以下代码将模拟在后面的代码中创建的文本框中单击鼠标。

    TextBox textBox1;
    bool mouseDown;

    public SilverlightControl1()
    {
        InitializeComponent();

        textBox1 = new TextBox();
        textBox1.MouseLeftButtonDown += textBox1_MouseLeftButtonDown;
        textBox1.MouseLeftButtonUp += textBox1_MouseLeftButtonUp;
        mouseDown = false;
    }

    void textBox1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        if (mouseDown)
        {
            // Do the mouse click here
        }
        mouseDown = false;
    }

    void textBox1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        mouseDown = true;
    }

您可能希望添加一个附加检查,指示鼠标按下和鼠标按下之间的时间小于500毫秒(比如说),并且鼠标在事件之间的移动速度不超过一个像素或两个像素。 / p>

答案 1 :(得分:1)

TextBox由于继承自UIElement而导致鼠标事件,但仅在点击边框时触发MouseDown事件。单击TextBox的文本编辑区域时,您不会收到鼠标事件。

最接近你的是GotFocus事件。

答案 2 :(得分:0)

我会在ChrisF的回答中添加一些内容,如果那就是你想要的,请告诉我。

 TextBox textBox1;

    public SilverlightControl1()
    {
        InitializeComponent();

        textBox1 = new TextBox();
        textBox1.MouseLeftButtonDown += new MouseButtonEventHandler(textBox1_MouseLeftButtonDown);
    }

    void textBox1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        InvokeEvent(sender, null);
    }


        public event EventHandler FireEvent;

        public void InvokeEvent(object sender, EventArgs e)
        {
            EventHandler handler = FireEvent;
            if (handler != null) handler(sender, e);
        }

/////这里的vb.net代码段请尝试下面的代码:

Public Partial Class SilverlightControl1
    Inherits UserControl
    Private textBox1 As TextBox

    Public Sub New()
        InitializeComponent()

        textBox1 = New TextBox()
        AddHandler textBox1.MouseLeftButtonDown, AddressOf textBox1_MouseLeftButtonDown
    End Sub

    Private Sub textBox1_MouseLeftButtonDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
        InvokeEvent(sender, Nothing)
    End Sub


    Public Event FireEvent As EventHandler

    Public Sub InvokeEvent(ByVal sender As Object, ByVal e As EventArgs)
        Dim handler As EventHandler = FireEvent
        RaiseEvent handler(sender, e)
    End Sub
End Class