20 Mart 2014 Perşembe

50 C# Görsel Programlama 50 ClipBoard İşlemleri 2

Merhabalar herkese. Sitenin yeni tasarımıydı farklı işlerdi güçlerdi derken baya bir geç kaldığım daha önceden anlatımının sözünü verdiğim Clipboard işlemlerinin 2. dersi ile beraberiz.

C# Görsel Programlamada 50. ders anlatımım olduğu için benim için özel ve önemli bir anlatım olacak.

İlk dersimize bakan arkadaşlarım bilir, hatırlamak isteyenlerde ClipBoard İşlemleri 1  bu adresten bakabilirler ilk dersimizde Clipboard işlemlerinden kısaca bahsetmiş basit bir örnekle dersi sonlandırmıştım. Şimdiki anlatımımda ise daha detay bir anlatım yapacağım ve daha detaylı bir örnek üzerinde çalışacağız.

Öyleyse Bismillah diyelim ve başlayalım.

İlk olarak çalışacağımız formu görerek başlayalım.




Şimdi bu form ışığında yapacağımız işlemleri anlatacağım kısaca sizlere.

İşlem bir diye nitelediğim yerde birinci textbox içine yazılmış ifadenin tamamını kopyala butonuna bastığımızda  Clipboard nesnemiz içine alacağız. Yapıştır dediğimiz de ise textbox2 ye bunu yapıştıracağız.

2. işlem dediğimiz yerde ise şunu yapacağız. Bizler her zaman kopyalama işlemini bir bölümdeki tüm metin için yapmayız. O bölüm içinde belli bir bölümü seçip yada işaretleyip sadece o kısmı kopyalarız. İşte bu bölümde de, birinci textbox içine yazılmış değer içinde bir kısmı seçip sadece seçilen kısmın kopyalama işlemini yapmayı sağlayacağız.

3. işlem ise Clipboard nesnesinin yapısında sadece text ifadeleri tutmadığını göstermek için koyduğum bir bölüm. Burada kopyala dediğimizde picturebox1 içindeki resmi Clipboard içine kopyalıcaz yapıştır deyince de picturebox2 içine yapıştıracağız.

O zaman ilk işlem ve kodları ile başlayalım.



Bu kodlarda ilk odaklanmamız gereken nokta SetDataObject kodunun olduğu bölüm. 

Clipboard nesnemizin bir metodu olan bu ifadenin 3 overload ı vardır. 

Öncelikle ne işe yarar ondan bahsedelim. 

SetDataObject() Clipboard nesnemize veri eklemek için kullandığımız bir metoddur. 

3 overload ı vardır demiştik. Onlardan bahselim. 

Bu metodumuz sadece, object türünde bir veriyi bünyesinde bulundurarak işlem yapabilir. 

İkinci yöntemi ise bizim programımızda kullandığımız şeklidir. Object türünde verinin dışında bir de bool türünde bir parametrede alabilir. Yani true yada false şeklide. 

Peki bu ifade ne işe yarar?


Bu ifade şu işe yarayacaktır arkadaşlar. Mesela siz bu program açıkken Clipboard nesnesine bir kopyalama işlemi yaptı iseniz program kapandıktan sonra kopyaladığınız ifadenin Clipboard nesnesinden silinip silinmeyeceğine karar verir. Değer true ise program kapansada veri Clipboard nesnesinde saklı tutulacaktır. Ama false olursa veri silinecektir.
3. parametremiz ise veri, bool ifadesinden sonra intretrytimes ve intretrydelay şeklindeki parametredir. 

Bu ise şu ise yarayacaktır program kapandıktan sonra verinin delay ile belirtilen süre aralığında times ile kaç kere kullanılabileceğini belirler.

Kodlarımızı biraz daha inceleyecek olursak. Clipboard nesnesinin null değer alamadığını biliyorduk bu yüzden textbox boş iken kopyala tuşuna bassaydık bir hata alacaktık. Buda bizim programcı kimliğimize zarar verecek bir iş olurdu. O yüzden if ile textbox ın boş olup olmadığına baktık ve değeri Clipboard nesnesine yazdırdık. Zaten boş iken tıklayınca da else uygulancak bir uyarı mesajı görecektik.




Şimdi gelelim bu kodlarımıza. Clipboard da tutulan değerleri IDataObject türünde bir nesnede tutabiliriz. 

GetDataObject() metodu ise Clipboard içindeki veriye ulaşmaya yardımcı olur.

İlk olarak IDataObject türündeki nesne ismindeki nesnemize Clipboard içindeki veriyi aldık.

İf ile nesne içindeki DataFormat ile verinin türünü kontrol ettik.

Ve şart sağlanıyorsa GetData ile veriye ulaşıp  textbox2 ye yazdırdık.



Gelelim ikinci işlemimize.


İlk başta da belirttim burada yapacağımız işlem textbox içindeki seçtiğimiz kısmı kopyalama işlemi.

Textbox içindeki seçili veri ile işlem yapan metodlar Selection şeklinde başlayan metodlardır. 

Burada ilk olarak if ile seçili bir alan var mı bunun kontrolünü yaptık. 

SelectionLength seçili kısmın uzunluğunu geri döndürür. Eğer sıfır değilse demek ki seçili alan var demektir. İf içinde veriyi alma işlemi bildiğimiz işlem. Burada seçili veriyi alabilmek için SelectedText olayını kullandık. Diğer işlemler bildiğimiz işlemler.




Bu bölümde az önce ilk kısımda anlattığım aynı kodlar.

Görelim.



Ve son olarak 3. kısımdayız.

Burada Clipboard nesnemizin sadece text ifadeleri değil resim benzeri başka ifadeleri de barındırabildiğini göstermek istiyorum.

Kodlarımızı görelim.


Artık bu koda çok yabancı değiliz ne olduğunu biliyoruz. Bize bu bölümde 2. kısımdaki kodlar yabancı gelecektir onlara bakalım.



Yine ilk olarak bir IDataObject nesnesi oluşturduk ve Clipboard içindeki veriyi aldık.

İf olayında DataFormats.Bitmap ile verinin bir resim ögesi olup olmadığına baktık. 

Picturebox.İmage kodu picturebox üzerindeki resmi belirleyecektir. Devamında nesne3 içinden gelen veri bir resim nesnesi ise (Bitmap) ile bu türü Bitmap türüne dönüştürdük. Bir alttaki kod ile de resmin picturebox üzerindeki konumunu belirledik. StretchImage resmi picturebox a sığdır demektir.

Görelim.




İşte bu kadardı. Nice 50 dersler yazabilirim inşallah. Hem sizlere daha iyi yardımcı olmam hemde kendimi geliştirmem adına derslerle ilgili yorumlarınızı belirtirseniz sevinirim diyeyim ve huzurdan ayrılayım. Çalışan tüm arkadaşlarıma kolaylıklar vesselam.

Murat Bilginer










Hiç yorum yok:

Yorum Gönder