ASP.NET
Network Akademi

Met Hostimg

“Bilgi paylaşıldıkça artar” sloganı ile .NET Platformuna ilişkin birikimlerin paylaşıldığı ASP.NET.TR Topluluğunda sizde “YAZAR” olmak için ; info@asp.net.tr e-mail adresine kendinizi anlatan bir e-mail göndererek başvuruda bulunabilirsiniz.

Silverlight 2.0 içerisinde farenin çift tıklamasını algılamanın yolu.

Daron YÖNDEM
Silverlight
10.03.2010 13:37:32
Hit : 6981

Silverlight içerisinde otomatik olarak farenin çift tıklamasını algılayacak bir sistem bulunmuyor. Çok ciddi bir eksik gibi gözükmese de aslında özellikle iş uygulamaları hazırlarken bu eksik can sıkabiliyor. Aslında bu eksiği gidermenin çok kolay bir yolu var. Çift tıklama sistemi entegre etmek istediğiniz bir kontrol normal tıklama durumunu kontrol ederek bir önceki normal tıklama ile aradaki süreyi ve bir önceki tıklama ile şu anki tıklamanın pozisyonlarını kontrol etmeniz yeterli olacaktır.

[VB]

    Dim SonKonum As Point

    Dim SonTik As Date

 

    Private Sub Page_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles Me.MouseLeftButtonDown

        If e.GetPosition(Me).X < SonKonum.X + 10 And e.GetPosition(Me).X > SonKonum.X - 10 Then

            If e.GetPosition(Me).Y < SonKonum.Y + 10 And e.GetPosition(Me).Y > SonKonum.Y - 10 Then

                If DateDiff(DateInterval.Second, SonTik, Now) < 1 Then

                    MessageBox.Show("HO")

                End If

            End If

        End If

        SonKonum = e.GetPosition(Me)

        SonTik = Now

    End Sub

Yukarıdaki kod içerisinde de görebileceğiniz üzere ilk olarak bir önceki tıklama bilgilerini saklamak üzere bir Date bir de Point değişkenimizi global olarak tanımlıyoruz. Bu değişkenlerin sürekli en son tıklamaya ait konum ve zaman bilgilerini saklayacak. Sonrasında MouseLeftButtonDown event-listener'ı içerisinde bir önceki tıklama ile şu anki tıklamanın koordinatlarını karşılaştırıyoruz. Kullanıcı tabi ki biraz fareyi kaydırmış olabilir o nedenle yaklaşık 20 piksellik bir kayma payı verebiliriz. Eğer yeni gelen tıklamanın koordinatları bir önceki ile aynı ise bu sefer de ikinci tıklama anı ile bir önceki tıklama arasında geçen süreyi hesaplıyoruz. Süre bir saniyenin altında ise büyük ihtimal ile bir çift tıklama gerçekleşmiş demektir. Bizim örneğimizde basit bir MessageBox gösteriyoruz, sizin kodlarınızda tabi ki farklı işlemler yapılacaktır.

Tüm bu kontrollerin sonucu olumlu ve olumsuz olsun, en sonunda da Son Tıklama'ya ait bilgileri saklayacak olan değişkenlerimize yeni tıklamanın bilgilerini aktarmayı unutmuyoruz ki bir sonraki tıklamada bu bilgileri "bir önceki" tıklama bilgileri başlığı ile incelenebilsin.

Hepinize kolay gelsin.




BU İÇERİĞE YORUMDA BULUNUN


Bu MAKALE'ye yorum yapabilmek için Üye olmalısınız ...!


BU İÇERİĞE YAPILAN YORUMLAR