我正在使用silverlight 3,我想在后面的代码中创建的文本框中创建一个处理程序和事件。有人能指出我正确的方向。
我需要这样做才能在点击文本框时触发一些事情。
如果你在vb.net中有一个更好的例子。 谢谢 香农
答案 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