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

0 dakikada yazıldı

5827 defa okundu

Düzenle

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.