您的位置:首页 > 其它

silverlight鼠标双击

2011-09-27 00:38 239 查看

SilverlightTipoftheDay#82–HowtoImplementDoubleClick

Silverlightcurrentlyhasfullmousesupportforsingleclick.However,doubleclickisaanotherstory.InthistipIwillshowyouhowtoimplementdoubleclick.Youcanapplythistechniqueforanindividualcontrolorevenyourentirepage.

ThekeythingtodoistostartaDispatcherTimertimeroncealeftmouseclickeventhasbeenreceived.Ifanothermouseclickisinterceptedbeforethedoubleclicktimeintervalhaspassedthenadoubleclickhasoccurred.
Thisintervalistypicallysettobearound200milliseconds.Once200millisecondshaspassedthetimerisstoppedanddisableduntilanothermouseclickisreceived.

Tostart,let’screateourtimerandaddalistenerforthe
MouseLeftButtonDownevent.

DispatcherTimer_doubleClickTimer;

Image_lastImage=null;


publicPage()

{

InitializeComponent();


_doubleClickTimer=newDispatcherTimer();

_doubleClickTimer.Interval=newTimeSpan(0,0,0,0,200);

_doubleClickTimer.Tick+=newEventHandler(DoubleClick_Timer);


this.MouseLeftButtonDown+=newMouseButtonEventHandler(Page_MouseLeftButtonDown);

}


//toomuchtimehaspassedforittobeadoubleclick.

voidDoubleClick_Timer(objectsender,EventArgse)

{

_doubleClickTimer.Stop();

}


Now,inthePage_MouseLeftButtonDown()methodwe:

Checkifthetimerisenabled.
Ifitisenabledalready,thenwehavealreadyclickedonceandhavemadeadoubleclick.

Ifisitnotenabledstartthetimer.

voidPage_MouseLeftButtonDown(objectsender,MouseButtonEventArgse)

{

if(_doubleClickTimer.IsEnabled)

{

//adoubleclickhasoccured

_doubleClickTimer.Stop();


ImagecatImg=newImage();

Uriuri=newUri("cat.png",UriKind.Relative);

ImageSourceimgSource=new

System.Windows.Media.Imaging.BitmapImage(uri);

catImg.Source=imgSource;


catImg.SetValue(Canvas.LeftProperty,(double)e.GetPosition(LayoutRoot).X-90);

catImg.SetValue(Canvas.TopProperty,(double)e.GetPosition(LayoutRoot).Y-113);


if(null!=_lastImage)

MainCanvas.Children.Remove(_lastImage);


MainCanvas.Children.Add(catImg);

_lastImage=catImg;


}

else

{

_doubleClickTimer.Start();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: