Makale Özeti

Bu yazımızda Silverlight 4.0 Beta içerisinden Clipboard erişimi ile ilgili API'lere basit bir örnekle göz atıyoruz.

Makale

Taaa Silverlight 1.0 zamanında Clipboard erişimi ile ilgili bir makale yazmıştım. Aradan bir buçuk yıl geçmiş :) Silverlight 4 Beta ile beraber Clipboard erişimi artık default olarak geliyor. Böylece rahatlıkla JavaScript mile uğraşmadan C# veya VB kodunuz ile Clipboard'a ulaşabilir, veri alabilir veya verebilirsiniz.

Bakalım Clipboard'da birşey var mı?

Clipboard'dan birşey almadan önce birşey olup olmadığını kontrol etmek gerek. Şu an için Silverlight 4 Beta'da Clipboard erişlimi olarak sadece Unicode metin desteği var. O nedenle kullanacağımız tüm API'lerde de bu izi rahatlıkla görebilirsiniz.

[XAML]

<UserControl x:Class="SilverlightApplication8.MainPage"

   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

   mc:Ignorable="d"

   d:DesignHeight="300" d:DesignWidth="400">

 

    <Grid x:Name="LayoutRoot" Background="White">

        <StackPanel>

            <Button x:Name="btnKes" Content="Kes" />

            <Button x:Name="btnYapistir" Content="Yapıştır" />

            <TextBox x:Name="txtMetin" />

        </StackPanel>

    </Grid>

</UserControl>

Yukarıdaki XAML kodu örnek uygulamamızın arayüzüne ait. Arayüzde basit birer Kes ve Yapıştır düğmelerinin yanı sıra bir de TextBox yer alıyor. Amacımız sistem clipboardundaki veriyi bu textbox içerisine yapıştırmak veya textbox içerisinden bir metni kesip aynı şekilde clipboarda yerleştirmek.

[VB]

    Private Sub btnYapistir_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnYapistir.Click

        If Clipboard.ContainsText Then

            txtMetin.Text = Clipboard.GetText

        End If

    End Sub

Yapıştır düğmemizin arkasında hemen Clipboard sınıfındaki shared metodlardan ContainsText'i kullanarak Clipboard içerisinde bir metin olup olmadığını kontrol edebiliyoruz. Sonrasında eğer metin varsa rahatlıkla bu metni de GetText ile alabiliyoruz.

[VB]

    Private Sub btnKes_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnKes.Click

        Clipboard.SetText(txtMetin.SelectedText)

        txtMetin.Text = txtMetin.Text.Remove(txtMetin.SelectionStart, txtMetin.SelectionLength)

    End Sub

Sıra kesme işlemine yani Clipboard'a data aktarmaya gelince de yine Clipboard sınıfı altındaki SetText metodunu kullanabiliriz. Söz konusu metod parametre olarak Clipboard'a aktarmak istediğimiz yazıyı alıyor. Tabi söz konusu yazıyı Clipboard'a yerleştirdikten sonra TextBox'tan da kaldırmanın uygun olacağını düşündüm :) O nedenle bir sonraki satırı da keyfi olarak ekledim diyebilirim.

Clipboard erişimi hakkı!
Clipboard erişimi hakkı!

Uygulamanız ilk Clipboard erişimine el attığı anda :) kullanıcıya yukarıdaki gibi bir uyarı penceresi gösterilecektir. Bu pencere ile kullanıcı uygulamanıza Clipboard erişimi izni verebilir. Eğer izin verilir ise uygulama söz konusu session boyunca bu izne sahip olacaktır. Eğer izin verilmez ise kodunuz bir Exception verecektir. O nedenle erişim kodlarınızı Try/Catch blokları içerisinde tutup hataya göre yol almak uygun olabilir.

Hepinize kolay gelsin.