Как добавить событие клика в текстовое поле, созданное в коде - PullRequest
2 голосов
/ 18 мая 2010

Я использую silverlight 3, и я хотел бы создать обработчик и событие, связанное с щелчком мыши в текстовом поле, которое было создано в коде позади. Может кто-нибудь направить меня в правильном направлении.

Мне нужно сделать так, чтобы некоторые вещи запускались при нажатии на это текстовое поле.

если у вас есть пример в vb.net, это было бы еще лучше. Спасибо Shannon

Ответы [ 3 ]

1 голос
/ 18 мая 2010

TextBox, имея события мыши благодаря наследованию от UIElement, запускает событие MouseDown только при щелчке по его границе. Вы не получаете события мыши при щелчке в области редактирования текста TextBox.

Самое близкое к этому событие - событие GotFocus.

1 голос
/ 18 мая 2010

Следующий код будет имитировать щелчок мыши в текстовом поле, созданном в коде позади.

    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 миллисекунд (скажем) и что мышь не перемещалась более чем на один или два пикселя между событиями.

0 голосов
/ 18 мая 2010

Я просто добавлю что-нибудь в ответ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...