Silverlight 4 Beta ile Clipboard Erişimi

0 dakikada yazıldı

5102 defa okundu

Düzenle

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.