Makale Özeti

Uzun zaman aralığından sonra makalelerime C# 3.0 ile ilgili özelliklerle kaldığım yerden devam ediyorum.

Makale

C# 3.0 RichTextBox’da DetectURL ve LinkClicked Özellikleri

Uzun zaman aralığından sonra makalelerime C# 3.0 ile ilgili özelliklerle kaldığım yerden devam ediyorum.

RichTextBox’ın C# 3.0 ile gelen bir özelliğinden sizlere bahsetmek istiyorum. Bu özelliğin default özelliği true olduğu için RichTextBox’ın çalışma anında yazılan internet adresleri otomatik olarak linke dönüştürülür. Bunu daha detaylı görebilmek adına Windows formuma bir RichTextBox ekliyorum ve çalışma anında web adresimi yazıyorum.

du1.jpg

Bu esnada linke tıklanırsa herhangi bir tepki alınmaz. Çünkü RichTextBox nesnesi tarafından link olarak işaretlenen adresin Internet Explorer gibi bir browser ile ziyaret edilebilmesi için bazı işlemleri yapmamız gerekiyor.

Çalışma anında RichTextBox’taki herhangi bir link tıklandığında LinkClicked olayı meydana gelir ve bu olayı temsil eden metot eğer hazırlanmışsa browser bunu algılar. LinkClicked olayını temsil eden metot LinkClickedEventArgs tipinde bir parametreye sahiptir.

Biz de bu parametreleri ve LinkClicked özelliği kullanarak RichTextBox’ımıza yazılan bir web adresinin browserımız tarafından algılanmasını sağlayabiliriz.

Aşağıdaki kodları yazdığımızda gerekli neticeyi alacağız.

private void richTextBox1_LinkClicked_1(object sender, LinkClickedEventArgs e)

{

string linkmetni;

linkmetni = e.LinkText;

System.Diagnostics.Process.Start(linkmetni);

}

 

Bu kodda gördüğünüz gibi System.Diagnostics sınıfının Process.Start özelliğinden yararlanıyoruz ve RichTextBox’ımıza yazılan web adresine tıklandığında browserımızın bunu yakalamasını sağlıyoruz. Eğer bu hazırlığı yapmazsak RichTextBox’ımıza yazılan web adresi sadece link halinde duracak ve browserımızın tarafından algılanamayacaktır.

Makalemin içinde bir de sürpriz yapıyorum. Şimdi bir web adresinin RSS dosyasının içeriğini okuyup RichTextBox’a aktaracağım. Yapacağımız tek şey yukarıda görüntüsünü verdiğim forma bir buton ve bir Textbox eklemek ve click olayına aşağıdaki kodları yazmak;

private void button1_Click(object sender, EventArgs e)

{

System.Net.HttpWebRequest istek;

System.Net.HttpWebResponse karsilik;

istek = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(textBox1.Text);

karsilik=(System.Net.HttpWebResponse)istek.GetResponse();

System.IO.Stream akis;

System.IO.StreamReader okuyucu;

akis=karsilik.GetResponseStream();

okuyucu=new System.IO.StreamReader(akis);

string satir=okuyucu.ReadToEnd();

richTextBox1.AppendText(satir);

System.Xml.XmlDocument xml_belge=new System.Xml.XmlDocument();

xml_belge.LoadXml(satir);

richTextBox1.Text=xml_belge.InnerText;

}

 

Amacımız Textbox’ımıza bir rss adresi yazıp butona tıklamak ve ilgili web adresinin bu RSS dosyasının içeriğini RichTextBox’a yazdırmak. Burada özellikle System.Net sınıfının özelliklerinden faydalandım. Öncelikle istek ve karsilik adinda 2 parametre belirledim. Bu parametreler vasıtasıyla TextBox’ımıza yazılan RSS adresine ulaşıp System.IO sınıfının Stream özelliğiyle ilgili karşılığı yakalayıp bir xml dökümanı yardımıyla RSS dosya içeriğini RichTextBox’a attık. Özellikle 2.konu için uygulamalarınızda direkt olmasa da dolaylı olarak çok güzel sonuçlar elde edebileceğiniz bir makale olduğunu düşünüyorum.

Makaleler tam gaz devam edecek. Her sorununuzu benimle paylaşabilirsiniz. Tekrar görüşmek üzere.


Yağız Gönüler
yagizgonuler@gmail.com


Kaynaklar:
http://msdn.microsoft.com/en-us/library/system.io.aspx

http://msdn.microsoft.com/en-us/library/system.net.aspx

http://msdn.microsoft.com/en-us/library/system.xml(VS.71).aspx

Memik Yanık – Visual Studio 2008 ile Visual C# 3.0 For .Net Framework 3.5