<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Pir Zöhre Ana Forum - C #]]></title>
		<link>https://www.zohreanaforum.com/</link>
		<description><![CDATA[Pir Zöhre Ana Forum - https://www.zohreanaforum.com]]></description>
		<pubDate>Mon, 04 May 2026 14:39:08 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Program / Proje Yazılır........ . Dönem Ödevi vs...]]></title>
			<link>https://www.zohreanaforum.com/konu-program-proje-yazilir-donem-odevi-vs.html</link>
			<pubDate>Sat, 18 Feb 2012 17:15:32 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=12363">master_imp</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-program-proje-yazilir-donem-odevi-vs.html</guid>
			<description><![CDATA[&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;  <br />
    <br />
  Bir İTÜ öğrencisi(Bilgisayar Mühendisi) olarak; <br />
  &#8730;     Programcılık ve Mühendislik Fakültesi Öğrencileri, Lise Öğrencileri ve İşyerleri için kişinin isteğine göre istenilen dilde program yazılır&#8230; <br />
  Kısa sürede program/proje teslimat garantisi&#8230;<br />
  &#8730;     Uygun fiyat garantisi...<br />
    <br />
  &#8730;     Daha önce birçok öğrenciye ve işyerine yazmış olduğum programlar alıcı beğenmiş ve memnun kalmıştır...<br />
   <br />
  &#8730;    İşimde profesyonelimdir&#8230;                 <br />
    <br />
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776; <span style="text-decoration: underline;" class="mycode_u"> </span></div></div>
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">İletişim için:</div></div>
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">  <a href="mailto:master_imp@hotmail.com.tr" class="mycode_email">master_imp@hotmail.com.tr</a></div></div>
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">[email=masterimp00@gmail.com]masterimp00@gmail.com[/email<span style="text-decoration: underline;" class="mycode_u">] </span></div></div>
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">[url=http://www.facebook.com/profile.php?id=100003473239775]Master İmp | Facebook[/url<span style="text-decoration: underline;" class="mycode_u">] </span></div></div>
  <div style="text-align: center;" class="mycode_align">[align=center<span style="text-decoration: underline;" class="mycode_u">]  </span></div>[/align]<br />
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776; <span style="text-decoration: underline;" class="mycode_u"> </span></div></div>
  <div style="text-align: center;" class="mycode_align">[align=center<span style="text-decoration: underline;" class="mycode_u">]  </span></div>[/align]<br />
  <div style="text-align: center;" class="mycode_align">[align=center<span style="text-decoration: underline;" class="mycode_u">]  </span></div>[/align]<br />
  &#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;  <br />
    <br />
    <br />
  Teşekkürler&#8230;.. ]]></description>
			<content:encoded><![CDATA[&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;  <br />
    <br />
  Bir İTÜ öğrencisi(Bilgisayar Mühendisi) olarak; <br />
  &#8730;     Programcılık ve Mühendislik Fakültesi Öğrencileri, Lise Öğrencileri ve İşyerleri için kişinin isteğine göre istenilen dilde program yazılır&#8230; <br />
  Kısa sürede program/proje teslimat garantisi&#8230;<br />
  &#8730;     Uygun fiyat garantisi...<br />
    <br />
  &#8730;     Daha önce birçok öğrenciye ve işyerine yazmış olduğum programlar alıcı beğenmiş ve memnun kalmıştır...<br />
   <br />
  &#8730;    İşimde profesyonelimdir&#8230;                 <br />
    <br />
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776; <span style="text-decoration: underline;" class="mycode_u"> </span></div></div>
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">İletişim için:</div></div>
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">  <a href="mailto:master_imp@hotmail.com.tr" class="mycode_email">master_imp@hotmail.com.tr</a></div></div>
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">[email=masterimp00@gmail.com]masterimp00@gmail.com[/email<span style="text-decoration: underline;" class="mycode_u">] </span></div></div>
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">[url=http://www.facebook.com/profile.php?id=100003473239775]Master İmp | Facebook[/url<span style="text-decoration: underline;" class="mycode_u">] </span></div></div>
  <div style="text-align: center;" class="mycode_align">[align=center<span style="text-decoration: underline;" class="mycode_u">]  </span></div>[/align]<br />
  <div style="text-align: center;" class="mycode_align"><div style="text-align: center;" class="mycode_align">&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776;&#8776; <span style="text-decoration: underline;" class="mycode_u"> </span></div></div>
  <div style="text-align: center;" class="mycode_align">[align=center<span style="text-decoration: underline;" class="mycode_u">]  </span></div>[/align]<br />
  <div style="text-align: center;" class="mycode_align">[align=center<span style="text-decoration: underline;" class="mycode_u">]  </span></div>[/align]<br />
  &#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;&#9679;  <br />
    <br />
    <br />
  Teşekkürler&#8230;.. ]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Visual C# 2008 Eğitimi Türkçe E-Book]]></title>
			<link>https://www.zohreanaforum.com/konu-visual-c-2008-egitimi-turkce-e-book.html</link>
			<pubDate>Sat, 13 Nov 2010 14:58:42 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=3">donanma44</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-visual-c-2008-egitimi-turkce-e-book.html</guid>
			<description><![CDATA[<img src="http://img717.imageshack.us/img717/9268/visualc2008egitimi30589.png" loading="lazy"  alt="[Resim: visualc2008egitimi30589.png]" class="mycode_img" /><br />
<br />
Adım adım Visual C# 2008'in resimli ve örnekli olarak anlatımının  yapıldığı PDF formatında 696 sayfa başarılı bir Türkçe e-kitap.<br />
<br />
<a href="http://hotfile.com/dl/64188941/1afeaec/Visual_C_2008_Egitimi.rar.html" target="_blank" rel="noopener" class="mycode_url">Hotfile.com: One click file hosting: Visual C# 2008 Egitimi.rar</a>]]></description>
			<content:encoded><![CDATA[<img src="http://img717.imageshack.us/img717/9268/visualc2008egitimi30589.png" loading="lazy"  alt="[Resim: visualc2008egitimi30589.png]" class="mycode_img" /><br />
<br />
Adım adım Visual C# 2008'in resimli ve örnekli olarak anlatımının  yapıldığı PDF formatında 696 sayfa başarılı bir Türkçe e-kitap.<br />
<br />
<a href="http://hotfile.com/dl/64188941/1afeaec/Visual_C_2008_Egitimi.rar.html" target="_blank" rel="noopener" class="mycode_url">Hotfile.com: One click file hosting: Visual C# 2008 Egitimi.rar</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# Okey 1.0]]></title>
			<link>https://www.zohreanaforum.com/konu-c-okey-1-0--29478.html</link>
			<pubDate>Sun, 18 Jul 2010 12:07:00 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=6623">ykmz_80</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-okey-1-0--29478.html</guid>
			<description><![CDATA[Visual C#.Net 2008 Sürümü İle Yazılmış Okey Oyunu.<br />
Ayrıca 30 Adet Skins Özelliği Var.<br />
 <br />
<a href="http://www.upload.gen.tr/d.php/s12/d3tkkkmq/C__Okey_1.0.rar.html" target="_blank" rel="noopener" class="mycode_url">C Okey 1 indir - Upload.gen.tr</a><br />
 <br />
 <br />
 <br />
<a href="http://img651.imageshack.us/i/okey.jpg/" target="_blank" rel="noopener" class="mycode_url"><img src="http://www.zohreanaforum.com/images/imported/2010/07/43.jpg" loading="lazy"  alt="[Resim: 43.jpg]" class="mycode_img" /></a>]]></description>
			<content:encoded><![CDATA[Visual C#.Net 2008 Sürümü İle Yazılmış Okey Oyunu.<br />
Ayrıca 30 Adet Skins Özelliği Var.<br />
 <br />
<a href="http://www.upload.gen.tr/d.php/s12/d3tkkkmq/C__Okey_1.0.rar.html" target="_blank" rel="noopener" class="mycode_url">C Okey 1 indir - Upload.gen.tr</a><br />
 <br />
 <br />
 <br />
<a href="http://img651.imageshack.us/i/okey.jpg/" target="_blank" rel="noopener" class="mycode_url"><img src="http://www.zohreanaforum.com/images/imported/2010/07/43.jpg" loading="lazy"  alt="[Resim: 43.jpg]" class="mycode_img" /></a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# okey 1.0]]></title>
			<link>https://www.zohreanaforum.com/konu-c-okey-1-0.html</link>
			<pubDate>Sat, 17 Jul 2010 23:49:24 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=6623">ykmz_80</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-okey-1-0.html</guid>
			<description><![CDATA[Visual C#.Net 2008 Sürümü İle Yazılmış Okey Oyunu.<br />
Ayrıca 30 Adet Skins Özelliği Var.<br />
 <br />
<a href="http://www.upload.gen.tr/d.php/s12/d3tkkkmq/C__Okey_1.0.rar.html" target="_blank" rel="noopener" class="mycode_url">C Okey 1 indir - Upload.gen.tr</a><br />
 <br />
 <br />
 <br />
<a href="http://img651.imageshack.us/i/okey.jpg/" target="_blank" rel="noopener" class="mycode_url"><img src="http://www.zohreanaforum.com/images/imported/2010/07/43.jpg" loading="lazy"  alt="[Resim: 43.jpg]" class="mycode_img" /></a>]]></description>
			<content:encoded><![CDATA[Visual C#.Net 2008 Sürümü İle Yazılmış Okey Oyunu.<br />
Ayrıca 30 Adet Skins Özelliği Var.<br />
 <br />
<a href="http://www.upload.gen.tr/d.php/s12/d3tkkkmq/C__Okey_1.0.rar.html" target="_blank" rel="noopener" class="mycode_url">C Okey 1 indir - Upload.gen.tr</a><br />
 <br />
 <br />
 <br />
<a href="http://img651.imageshack.us/i/okey.jpg/" target="_blank" rel="noopener" class="mycode_url"><img src="http://www.zohreanaforum.com/images/imported/2010/07/43.jpg" loading="lazy"  alt="[Resim: 43.jpg]" class="mycode_img" /></a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# Ögrenci Sınıf Yönetimi]]></title>
			<link>https://www.zohreanaforum.com/konu-c-ogrenci-sinif-yonetimi.html</link>
			<pubDate>Thu, 09 Jul 2009 13:54:50 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-ogrenci-sinif-yonetimi.html</guid>
			<description><![CDATA[using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Configuration;<br />
using System.Text;<br />
using System********s.Forms;<br />
using mysqlBaglantiNesnesi;<br />
using System.Data.SqlClient;<br />
using MySql.Data.MySqlClient;<br />
<br />
namespace OgrenciSinifYonetimi<br />
{<br />
    public partial class OgrenciEkle : Form<br />
    {<br />
        mySqlBaglanti myBaglanti;<br />
        string BaglantiMetni;<br />
        string sqlText;<br />
        MySqlConnection myCon;<br />
        string secilenId;<br />
        public OgrenciEkle()<br />
        {<br />
            InitializeComponent();<br />
        }<br />
<br />
        private void OgrenciEkle_Load(object sender, EventArgs e)<br />
        {<br />
            BaglantiMetni = ConfigurationSettings.AppSettings["baglantiMetni"];<br />
            myBaglanti = new mySqlBaglanti(BaglantiMetni);<br />
            myCon= new MySqlConnection(BaglantiMetni);<br />
            ogrenciListesi();<br />
        }<br />
<br />
        private void yeniKayitButton_Click(object sender, EventArgs e)<br />
        { <br />
            sqlText = string.Format("INSERT INTO ogrenci(ogrenciad,ogrenciveliad,yas) VALUES('{0}','{1}','{2}');", textBox1.Text, textBox2.Text, comboBox1.Text);<br />
            myBaglanti.baglantiAc();<br />
            myBaglanti.SorguYaz(sqlText);<br />
            myBaglanti.baglantiKapat();<br />
            textTemizle();<br />
            ogrenciListesi();<br />
        }<br />
<br />
        void textTemizle()<br />
        {<br />
            textBox1.Text = "";<br />
            textBox2.Text = "";<br />
            comboBox1.Text = "";<br />
        }<br />
<br />
<br />
        void ogrenciListesi()<br />
        {<br />
          sqlText="SELECT * FROM ogrenci";<br />
          MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(sqlText, myCon);<br />
          DataTable myDataTable = new DataTable();<br />
          myDataAdapter.Fill(myDataTable);<br />
          dataGrid1.DataSource = myDataTable;<br />
        }<br />
<br />
        private void dataGrid1_CurrentCellChanged(object sender, EventArgs e)<br />
        {<br />
           secilenId = dataGrid1[dataGrid1.CurrentRowIndex, 0].ToString();<br />
           textBox1.Text=dataGrid1[dataGrid1.CurrentRowIndex,1].ToString();<br />
           textBox2.Text = dataGrid1[dataGrid1.CurrentRowIndex, 2].ToString();<br />
           comboBox1.Text = dataGrid1[dataGrid1.CurrentRowIndex, 3].ToString();<br />
        }<br />
<br />
        private void KaydetButton_Click(object sender, EventArgs e)<br />
        {<br />
            sqlText = string.Format("Update ogrenci Set ogrenciad='{0}',ogrenciveliad='{1}',yas='{2}' WHERE ogrenciid={3}", textBox1.Text, textBox2.Text, comboBox1.Text,secilenId);<br />
            myBaglanti.baglantiAc();<br />
            myBaglanti.SorguYaz(sqlText);<br />
            myBaglanti.baglantiKapat();<br />
            textTemizle();<br />
            ogrenciListesi();<br />
        }<br />
<br />
        private void silButton_Click(object sender, EventArgs e)<br />
        {<br />
            sqlText = string.Format("DELETE FROM ogrenci WHERE ogrenciid={0}",secilenId);<br />
            myBaglanti.baglantiAc();<br />
            myBaglanti.SorguYaz(sqlText);<br />
            myBaglanti.baglantiKapat();<br />
            textTemizle();<br />
            ogrenciListesi();<br />
        }<br />
    }<br />
}]]></description>
			<content:encoded><![CDATA[using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Configuration;<br />
using System.Text;<br />
using System********s.Forms;<br />
using mysqlBaglantiNesnesi;<br />
using System.Data.SqlClient;<br />
using MySql.Data.MySqlClient;<br />
<br />
namespace OgrenciSinifYonetimi<br />
{<br />
    public partial class OgrenciEkle : Form<br />
    {<br />
        mySqlBaglanti myBaglanti;<br />
        string BaglantiMetni;<br />
        string sqlText;<br />
        MySqlConnection myCon;<br />
        string secilenId;<br />
        public OgrenciEkle()<br />
        {<br />
            InitializeComponent();<br />
        }<br />
<br />
        private void OgrenciEkle_Load(object sender, EventArgs e)<br />
        {<br />
            BaglantiMetni = ConfigurationSettings.AppSettings["baglantiMetni"];<br />
            myBaglanti = new mySqlBaglanti(BaglantiMetni);<br />
            myCon= new MySqlConnection(BaglantiMetni);<br />
            ogrenciListesi();<br />
        }<br />
<br />
        private void yeniKayitButton_Click(object sender, EventArgs e)<br />
        { <br />
            sqlText = string.Format("INSERT INTO ogrenci(ogrenciad,ogrenciveliad,yas) VALUES('{0}','{1}','{2}');", textBox1.Text, textBox2.Text, comboBox1.Text);<br />
            myBaglanti.baglantiAc();<br />
            myBaglanti.SorguYaz(sqlText);<br />
            myBaglanti.baglantiKapat();<br />
            textTemizle();<br />
            ogrenciListesi();<br />
        }<br />
<br />
        void textTemizle()<br />
        {<br />
            textBox1.Text = "";<br />
            textBox2.Text = "";<br />
            comboBox1.Text = "";<br />
        }<br />
<br />
<br />
        void ogrenciListesi()<br />
        {<br />
          sqlText="SELECT * FROM ogrenci";<br />
          MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(sqlText, myCon);<br />
          DataTable myDataTable = new DataTable();<br />
          myDataAdapter.Fill(myDataTable);<br />
          dataGrid1.DataSource = myDataTable;<br />
        }<br />
<br />
        private void dataGrid1_CurrentCellChanged(object sender, EventArgs e)<br />
        {<br />
           secilenId = dataGrid1[dataGrid1.CurrentRowIndex, 0].ToString();<br />
           textBox1.Text=dataGrid1[dataGrid1.CurrentRowIndex,1].ToString();<br />
           textBox2.Text = dataGrid1[dataGrid1.CurrentRowIndex, 2].ToString();<br />
           comboBox1.Text = dataGrid1[dataGrid1.CurrentRowIndex, 3].ToString();<br />
        }<br />
<br />
        private void KaydetButton_Click(object sender, EventArgs e)<br />
        {<br />
            sqlText = string.Format("Update ogrenci Set ogrenciad='{0}',ogrenciveliad='{1}',yas='{2}' WHERE ogrenciid={3}", textBox1.Text, textBox2.Text, comboBox1.Text,secilenId);<br />
            myBaglanti.baglantiAc();<br />
            myBaglanti.SorguYaz(sqlText);<br />
            myBaglanti.baglantiKapat();<br />
            textTemizle();<br />
            ogrenciListesi();<br />
        }<br />
<br />
        private void silButton_Click(object sender, EventArgs e)<br />
        {<br />
            sqlText = string.Format("DELETE FROM ogrenci WHERE ogrenciid={0}",secilenId);<br />
            myBaglanti.baglantiAc();<br />
            myBaglanti.SorguYaz(sqlText);<br />
            myBaglanti.baglantiKapat();<br />
            textTemizle();<br />
            ogrenciListesi();<br />
        }<br />
    }<br />
}]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# Kayıt Programı]]></title>
			<link>https://www.zohreanaforum.com/konu-c-kayit-programi.html</link>
			<pubDate>Thu, 09 Jul 2009 13:53:52 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-kayit-programi.html</guid>
			<description><![CDATA[using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Text;<br />
using System********s.Forms;<br />
using System.Configuration;<br />
using MySql.Data.MySqlClient;<br />
using System.Data.SqlClient;<br />
<br />
namespace kayıt_program<br />
{<br />
    public partial class Form1 : Form<br />
    {<br />
        public Form1()<br />
        {<br />
            InitializeComponent();<br />
        }<br />
<br />
        private void button3_Click(object sender, EventArgs e)<br />
        {   <br />
            baglantı.aç<br />
            StreamWriter ahm = File.AppendText("csdosyaislemleri.txt");<br />
            ahm.WriteLine(textBox1.Text + "&#36;" + textBox2.Text + "&#36;" + textBox3.Text);<br />
            ahm.Flush();<br />
            ahm.Close();<br />
            int i = 0;<br />
            <br />
            try<br />
            {<br />
                using (streamReader sr = new Stream())<br />
                    Reader("text.txt");<br />
                {<br />
                    string line;<br />
                    while ((line = sr.Readline()) != null)<br />
                    {<br />
                        listBox1.Items.Add(line);<br />
                    }<br />
                }<br />
            }<br />
            catch<br />
            {<br />
                MessageBox.Show("Hata Meydana Geldi");<br />
            }<br />
            but++;<br />
        }<br />
<br />
    }<br />
}]]></description>
			<content:encoded><![CDATA[using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Text;<br />
using System********s.Forms;<br />
using System.Configuration;<br />
using MySql.Data.MySqlClient;<br />
using System.Data.SqlClient;<br />
<br />
namespace kayıt_program<br />
{<br />
    public partial class Form1 : Form<br />
    {<br />
        public Form1()<br />
        {<br />
            InitializeComponent();<br />
        }<br />
<br />
        private void button3_Click(object sender, EventArgs e)<br />
        {   <br />
            baglantı.aç<br />
            StreamWriter ahm = File.AppendText("csdosyaislemleri.txt");<br />
            ahm.WriteLine(textBox1.Text + "&#36;" + textBox2.Text + "&#36;" + textBox3.Text);<br />
            ahm.Flush();<br />
            ahm.Close();<br />
            int i = 0;<br />
            <br />
            try<br />
            {<br />
                using (streamReader sr = new Stream())<br />
                    Reader("text.txt");<br />
                {<br />
                    string line;<br />
                    while ((line = sr.Readline()) != null)<br />
                    {<br />
                        listBox1.Items.Add(line);<br />
                    }<br />
                }<br />
            }<br />
            catch<br />
            {<br />
                MessageBox.Show("Hata Meydana Geldi");<br />
            }<br />
            but++;<br />
        }<br />
<br />
    }<br />
}]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# ve Kural Dışı Durum Yönetimi]]></title>
			<link>https://www.zohreanaforum.com/konu-c-ve-kural-disi-durum-yonetimi.html</link>
			<pubDate>Sun, 22 Feb 2009 16:51:09 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-ve-kural-disi-durum-yonetimi.html</guid>
			<description><![CDATA[Program yazmanın olmazsa olmazlarından biri olan hata yönetiminin C# ile nasıl yapılacağını biraz irdeleyelim...   <span style="font-weight: bold;" class="mycode_b">C# ve Kural Dışı Durum Yönetimi</span>    <br />
<br />
<br />
Bir kural dışı durum (exception)  programın normal akışının uygulanamaz olduğu durum, yani bir hatadır. Bir sorgulama sonucunda null değer dönerse, işleme devam etmek mümkün olmayabilir. Bu durum hata değildir. Ama kullanıcı sorgulanacak tablo adını yanlış girmişse, bu durumda bir hata ortaya çıkar. Bu hatalar programcı tarafından koda dahil edilebileceği gibi kullanıcı kaynaklı ya da sistemin normal olmayan şartlara gösterdiği tepkilerden kaynaklanabilir. Her programcı, yazdığı kodun içerisine hataları yakalamak için çeşitli yöntemler ekler. Bu yöntemler spesifik bir hatayı yakalamak için olabileceği gibi (örneğin veritabanında birden fazla kullanıcının aynı kayıda erişmesinden kaynaklanan bir kilit problemi), tasarım zamanında göz önüne alınmayan bir durumu yakalamak için de olabilir. Programda ortaya çıkan bir hata, eğer programcı tarafından kontrol edilmezse, program bir çalışma zamanı hatası verir ve kendini sonlandırır. <br />
<br />
Kural dışı durum yönetimi (exception handling) sebebi ne olursa olsun herhangi bir hata oluştuğunda, programın normal bir şekilde çalışmaya devam etmesini sağlamak için uygulanır. C#&#8217;da çalışma zamanında oluşan her hata System.Exception sınıfının bir üyesidir. System.Exception sınıfının iki alt kümesi vardır. SystemException ve ApplicationException. SystemException, programın çalışması sırasında ortaya çıkan ve Common Language Runtime tarafından oluşturulan hatalardır. ApplicationException hataları ise programın çerisinde, programcı tarafından ortaya çıkarılan hatalardır. <br />
<br />
<br />
 <span style="font-weight: bold;" class="mycode_b">Exception Sınıfı</span>    <br />
<br />
<br />
C# ekibi işleri kolaylaştırmak amacıyla SystemException sınıfından türetilen standart kural dışı durumlar tanımlamıştır. Bu kural dışı durumlar kendi konuları ile ilgili isim uzaylarında bulunur. Örnek olarak System.Data.SqlClient isim uzayında bulunan SqlDataAdapter&#8217;in fırlattığı bir kural dışı durum System.Data.SqlClient.SqlException sınıfından türetilir. Üstelik bu hatalardan hatanın nedenini ve kaynağını bulmak da artık daha kolay çünkü mesajlar eskiye göre oldukça açıklayıcı.<br />
Visual Studio kullanıyorsanız System yazıp noktaya bastığınız anda açılan intellisense penceresinde hemen dört tanımlı exception görürsünüz. ApplicationException, ArgumentException, ArgumentNullException ve ArgumentOutOfRangeException.. Bütün bunlar farklı durumlarda fırlatılmasına rağmen hepsinin özellik ve yöntemleri aynıdır. Bu özelliklerin en önemlilerine birlikte bakalım<br />
<br />
HelpLink: Hatayla ilişkili yardım dosyası.<br />
Message: Hata mesajı<br />
Source: Hatanın kaynağı.<br />
TargetSite: Çok kullanışlı bir özellik, hatanın ortaya çıktığı yordamın adını verir.<br />
StackTrace: Hataya yol açan çağrıların yığınını tutan bir karakter katarı döndürür. Dosya adı, yordam adı ve hatanın oluştuğu satır numarasını belirtir. <br />
<br />
 <span style="font-weight: bold;" class="mycode_b">Kural Dışı Durumları Yakalamak ve Yönetmek</span>    <br />
<br />
<br />
C#&#8217;da kural dışı durumlar dört anahtar kelime ile yönetilir: try, catch, throw ve finally. Şimdi bunları kullanımını görelim.<br />
<br />
Try-catch : Bu blok  C# altında hata yakalamanın temeli gibidir ve bu anahtar kelimeler birbirinden ayrı kullanılamaz. En basit kullanımı şu şekildedir.<br />
<br />
try<br />
{<br />
// Hata kontrolünün yapılacağı kodlar<br />
}<br />
catch (KuralDisiDurumTipi KuralDisiDurumDegiskeni)<br />
{<br />
// Hata ortaya çıktığında yapılacak işlemler<br />
}  <br />
<br />
Kural dışı durum tipi, CLR tarafından fırlatılan durum tipidir ve Kural Dışı Durumlar  bölümünde belirtilen değerlerden birini alır. Kural dışı durum değişkeni de, bizim hatayı ele alırken kullanacağımız hata nesnesidir. Gerçek bir örnek: <br />
<br />
using System;<br />
<br />
class Test<br />
{<br />
[STAThread]<br />
static void Main(string[] args)<br />
{<br />
int[] dizi=new int[4];<br />
<br />
try<br />
{<br />
Console.WriteLine("İşlem başlıyor...");<br />
for (int i=0; i&lt;=10; i++)<br />
{<br />
dizi[i]=i;<br />
Console.WriteLine("dizi[{0}] : {1}",i,dizi[i]);<br />
}<br />
Console.WriteLine("İşlem hatasız tamamlandı...");<br />
<br />
}<br />
catch (IndexOutOfRangeException e)<br />
{<br />
Console.WriteLine("Hata oluştu : " + e.Message);<br />
}<br />
Console.ReadLine();<br />
}<br />
<br />
}   <br />
<br />
<br />
Çıktı<br />
<br />
İşlem başlıyor&#8230;<br />
dizi[0] : 0<br />
dizi[1] : 1<br />
dizi[2] : 2<br />
dizi[3] : 3<br />
Hata oluştu : Index was outside the bounds of the array.<br />
<br />
Burada döngü içerisinde, diziye üst sınırdan daha fazla sayıda eleman aktarılarak bir hata oluşturuluyor. Döngünün ilk dört adımında herhangi bir problem olmadığı için program düzgün bir şekilde çıktı üretiyor. 5. adımda dizinin üst sınırı aşıldığı için bir hata ortaya çıkıyor ve bu hata catch bloğu ile yakalanıyor. Hatanın ortaya çıktığı andan itibaren try bloğu içerisindeki kodların yürütülmesi sona eriyor ve catch bloğu içerisindeki kodlar yürütülüyor. Burada for döngüsünden sonraki Console.WriteLine satırının yürütülmediğine dikkat edin. Eğer döngüyü 3 e kadar devam ettirirseniz, hata olmayacağı için for döngüsünden sonraki Console.WriteLine satırı da yürütülecekti. <br />
<br />
Finally : finally, try -  catch bloğunun sonunda, hata olsun olmasın yürütülmesini isteğimiz kod blokları için kullanılır. Örnek olarak bir veritabanı bağlantısı kullanalım. Hata olsun ya da olmasın yapacağımız işlemler sonucunda veritabanı bağlantısını kapatmak isteriz. Bu durumda finally imdadımıza yetişir. İşte bir örnek: <br />
<br />
try<br />
{<br />
SqlConnection cn=new SqlConneciton();<br />
// veritabanina baglanmaya calis..<br />
}<br />
catch (System.Data.SqlClient.SqlExceptiom e)<br />
{<br />
MessageBox.Show(&#8220;Veritabanina baglanti kurulamadı&#8221<img src="https://www.zohreanaforum.com/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_2" />;<br />
}<br />
finally<br />
{ <br />
cn.Close();<br />
}  <br />
<br />
<br />
Bu durumda hata olsa da olmasa da cn nesnesinin kapatılmasını garanti ederiz. <br />
<br />
Throw: Program içerisinde herhangi bir yerde bir kural dışı durum fırlatmak istediğimizde throw kullanırız. Kullanımı throw KuralDisiDurumTipi seklindedir. Aşağıdaki örnek bir sıfıra bölünme hatası fırlatır:<br />
<br />
using System;<br />
class Test<br />
{<br />
[STAThread]<br />
static void Main(string[] args)<br />
{<br />
try<br />
{<br />
Console.WriteLine("Birinci satır, hata yok");<br />
throw new DivideByZeroException();<br />
Console.WriteLine("İkinci satır, ekranda gözükmez...");<br />
}<br />
catch (DivideByZeroException e)<br />
{<br />
Console.WriteLine("Üçüncü satır, hata oluştu : " + e.Message);<br />
}<br />
}<br />
}    <br />
<br />
Bu kodu yazdığınızda Visual Studio throw&#8217;dan sonraki Console.WriteLine satırında sizi ulaşılamayan kod mesajıyla uyarır.<br />
<br />
Çıktı:<br />
<br />
Birinci satır, hata yok<br />
Üçüncü satır, hata oluştu : Attempted to divide by zero.<br />
<br />
<br />
 <span style="font-weight: bold;" class="mycode_b">Try-catch kullanım örnekleri</span>    <br />
<br />
<br />
Yukarıdaki örnekler sadece bir tek hata durumu içindi. İndeksin sınırlar dışına çıkması ya da sıfıra bölme gibi. Normal olarak yazdığımız programlarda birden fazla hata durumuyla karşılaşabiliriz. Bu durumda yapacağımız şey tek bir try bloğuna karşılık istediğimiz sayıda catch bloğu yazmaktır. Bu durumda bir hata oluştuğunda, oluşan hatanın tipine uygun olan catch bloğu yürütülecektir.  İşte örnek:<br />
<br />
using System;<br />
class Test<br />
{<br />
[STAThread]<br />
static void Main(string[] args)<br />
{<br />
int[] bolunen={2,4,6,8,10,12,14};<br />
int[] bolen={1,2,0,4,0};<br />
<br />
for (int i=0; i&lt;bolunen.Length;i++)<br />
{<br />
try<br />
{<br />
Console.WriteLine(bolunen[i] +" / "+ bolen[i] +" = " +bolunen[i]/bolen[i]);<br />
}<br />
catch (DivideByZeroException)<br />
{<br />
Console.WriteLine("Sıfıra bölme hatası oluştu..");<br />
}<br />
catch(IndexOutOfRangeException)<br />
{<br />
Console.WriteLine("Dizi üst sınırı aşıldı...");<br />
}<br />
}<br />
}<br />
}   <br />
<br />
Çıktı:<br />
<br />
2 / 1 = 2<br />
4 / 2 = 2<br />
Sıfıra bölme hatası oluştu..<br />
8 / 4 = 2<br />
Sıfıra bölme hatası oluştu..<br />
Dizi üst sınırı aşıldı&#8230;<br />
Dizi üst sınırı aşıldı&#8230;<br />
<br />
<br />
<img src="http://www.zohreanaforum.com/" loading="lazy"  alt="[Resim: www.zohreanaforum.com]" class="mycode_img" />[COLOR=#c5003f]Peki tüm hatalar için tek tek catch blokları mı yazmak zorundayız? Neyse ki hayır&#8230; Eğer catch bloğunda herhangi bir hata tipi belirtmezsek, oluşan hata  ne olursa olsun yakalanır&#8230;   <br />
<br />
try<br />
{<br />
// Hata kontrolünün yapılacağı kodlar<br />
}<br />
catch <br />
{<br />
// Bu şekilde bir kullanım ile tüm hataları yakalarız&#8230;<br />
}  <br />
<br />
<br />
        ]]></description>
			<content:encoded><![CDATA[Program yazmanın olmazsa olmazlarından biri olan hata yönetiminin C# ile nasıl yapılacağını biraz irdeleyelim...   <span style="font-weight: bold;" class="mycode_b">C# ve Kural Dışı Durum Yönetimi</span>    <br />
<br />
<br />
Bir kural dışı durum (exception)  programın normal akışının uygulanamaz olduğu durum, yani bir hatadır. Bir sorgulama sonucunda null değer dönerse, işleme devam etmek mümkün olmayabilir. Bu durum hata değildir. Ama kullanıcı sorgulanacak tablo adını yanlış girmişse, bu durumda bir hata ortaya çıkar. Bu hatalar programcı tarafından koda dahil edilebileceği gibi kullanıcı kaynaklı ya da sistemin normal olmayan şartlara gösterdiği tepkilerden kaynaklanabilir. Her programcı, yazdığı kodun içerisine hataları yakalamak için çeşitli yöntemler ekler. Bu yöntemler spesifik bir hatayı yakalamak için olabileceği gibi (örneğin veritabanında birden fazla kullanıcının aynı kayıda erişmesinden kaynaklanan bir kilit problemi), tasarım zamanında göz önüne alınmayan bir durumu yakalamak için de olabilir. Programda ortaya çıkan bir hata, eğer programcı tarafından kontrol edilmezse, program bir çalışma zamanı hatası verir ve kendini sonlandırır. <br />
<br />
Kural dışı durum yönetimi (exception handling) sebebi ne olursa olsun herhangi bir hata oluştuğunda, programın normal bir şekilde çalışmaya devam etmesini sağlamak için uygulanır. C#&#8217;da çalışma zamanında oluşan her hata System.Exception sınıfının bir üyesidir. System.Exception sınıfının iki alt kümesi vardır. SystemException ve ApplicationException. SystemException, programın çalışması sırasında ortaya çıkan ve Common Language Runtime tarafından oluşturulan hatalardır. ApplicationException hataları ise programın çerisinde, programcı tarafından ortaya çıkarılan hatalardır. <br />
<br />
<br />
 <span style="font-weight: bold;" class="mycode_b">Exception Sınıfı</span>    <br />
<br />
<br />
C# ekibi işleri kolaylaştırmak amacıyla SystemException sınıfından türetilen standart kural dışı durumlar tanımlamıştır. Bu kural dışı durumlar kendi konuları ile ilgili isim uzaylarında bulunur. Örnek olarak System.Data.SqlClient isim uzayında bulunan SqlDataAdapter&#8217;in fırlattığı bir kural dışı durum System.Data.SqlClient.SqlException sınıfından türetilir. Üstelik bu hatalardan hatanın nedenini ve kaynağını bulmak da artık daha kolay çünkü mesajlar eskiye göre oldukça açıklayıcı.<br />
Visual Studio kullanıyorsanız System yazıp noktaya bastığınız anda açılan intellisense penceresinde hemen dört tanımlı exception görürsünüz. ApplicationException, ArgumentException, ArgumentNullException ve ArgumentOutOfRangeException.. Bütün bunlar farklı durumlarda fırlatılmasına rağmen hepsinin özellik ve yöntemleri aynıdır. Bu özelliklerin en önemlilerine birlikte bakalım<br />
<br />
HelpLink: Hatayla ilişkili yardım dosyası.<br />
Message: Hata mesajı<br />
Source: Hatanın kaynağı.<br />
TargetSite: Çok kullanışlı bir özellik, hatanın ortaya çıktığı yordamın adını verir.<br />
StackTrace: Hataya yol açan çağrıların yığınını tutan bir karakter katarı döndürür. Dosya adı, yordam adı ve hatanın oluştuğu satır numarasını belirtir. <br />
<br />
 <span style="font-weight: bold;" class="mycode_b">Kural Dışı Durumları Yakalamak ve Yönetmek</span>    <br />
<br />
<br />
C#&#8217;da kural dışı durumlar dört anahtar kelime ile yönetilir: try, catch, throw ve finally. Şimdi bunları kullanımını görelim.<br />
<br />
Try-catch : Bu blok  C# altında hata yakalamanın temeli gibidir ve bu anahtar kelimeler birbirinden ayrı kullanılamaz. En basit kullanımı şu şekildedir.<br />
<br />
try<br />
{<br />
// Hata kontrolünün yapılacağı kodlar<br />
}<br />
catch (KuralDisiDurumTipi KuralDisiDurumDegiskeni)<br />
{<br />
// Hata ortaya çıktığında yapılacak işlemler<br />
}  <br />
<br />
Kural dışı durum tipi, CLR tarafından fırlatılan durum tipidir ve Kural Dışı Durumlar  bölümünde belirtilen değerlerden birini alır. Kural dışı durum değişkeni de, bizim hatayı ele alırken kullanacağımız hata nesnesidir. Gerçek bir örnek: <br />
<br />
using System;<br />
<br />
class Test<br />
{<br />
[STAThread]<br />
static void Main(string[] args)<br />
{<br />
int[] dizi=new int[4];<br />
<br />
try<br />
{<br />
Console.WriteLine("İşlem başlıyor...");<br />
for (int i=0; i&lt;=10; i++)<br />
{<br />
dizi[i]=i;<br />
Console.WriteLine("dizi[{0}] : {1}",i,dizi[i]);<br />
}<br />
Console.WriteLine("İşlem hatasız tamamlandı...");<br />
<br />
}<br />
catch (IndexOutOfRangeException e)<br />
{<br />
Console.WriteLine("Hata oluştu : " + e.Message);<br />
}<br />
Console.ReadLine();<br />
}<br />
<br />
}   <br />
<br />
<br />
Çıktı<br />
<br />
İşlem başlıyor&#8230;<br />
dizi[0] : 0<br />
dizi[1] : 1<br />
dizi[2] : 2<br />
dizi[3] : 3<br />
Hata oluştu : Index was outside the bounds of the array.<br />
<br />
Burada döngü içerisinde, diziye üst sınırdan daha fazla sayıda eleman aktarılarak bir hata oluşturuluyor. Döngünün ilk dört adımında herhangi bir problem olmadığı için program düzgün bir şekilde çıktı üretiyor. 5. adımda dizinin üst sınırı aşıldığı için bir hata ortaya çıkıyor ve bu hata catch bloğu ile yakalanıyor. Hatanın ortaya çıktığı andan itibaren try bloğu içerisindeki kodların yürütülmesi sona eriyor ve catch bloğu içerisindeki kodlar yürütülüyor. Burada for döngüsünden sonraki Console.WriteLine satırının yürütülmediğine dikkat edin. Eğer döngüyü 3 e kadar devam ettirirseniz, hata olmayacağı için for döngüsünden sonraki Console.WriteLine satırı da yürütülecekti. <br />
<br />
Finally : finally, try -  catch bloğunun sonunda, hata olsun olmasın yürütülmesini isteğimiz kod blokları için kullanılır. Örnek olarak bir veritabanı bağlantısı kullanalım. Hata olsun ya da olmasın yapacağımız işlemler sonucunda veritabanı bağlantısını kapatmak isteriz. Bu durumda finally imdadımıza yetişir. İşte bir örnek: <br />
<br />
try<br />
{<br />
SqlConnection cn=new SqlConneciton();<br />
// veritabanina baglanmaya calis..<br />
}<br />
catch (System.Data.SqlClient.SqlExceptiom e)<br />
{<br />
MessageBox.Show(&#8220;Veritabanina baglanti kurulamadı&#8221<img src="https://www.zohreanaforum.com/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_2" />;<br />
}<br />
finally<br />
{ <br />
cn.Close();<br />
}  <br />
<br />
<br />
Bu durumda hata olsa da olmasa da cn nesnesinin kapatılmasını garanti ederiz. <br />
<br />
Throw: Program içerisinde herhangi bir yerde bir kural dışı durum fırlatmak istediğimizde throw kullanırız. Kullanımı throw KuralDisiDurumTipi seklindedir. Aşağıdaki örnek bir sıfıra bölünme hatası fırlatır:<br />
<br />
using System;<br />
class Test<br />
{<br />
[STAThread]<br />
static void Main(string[] args)<br />
{<br />
try<br />
{<br />
Console.WriteLine("Birinci satır, hata yok");<br />
throw new DivideByZeroException();<br />
Console.WriteLine("İkinci satır, ekranda gözükmez...");<br />
}<br />
catch (DivideByZeroException e)<br />
{<br />
Console.WriteLine("Üçüncü satır, hata oluştu : " + e.Message);<br />
}<br />
}<br />
}    <br />
<br />
Bu kodu yazdığınızda Visual Studio throw&#8217;dan sonraki Console.WriteLine satırında sizi ulaşılamayan kod mesajıyla uyarır.<br />
<br />
Çıktı:<br />
<br />
Birinci satır, hata yok<br />
Üçüncü satır, hata oluştu : Attempted to divide by zero.<br />
<br />
<br />
 <span style="font-weight: bold;" class="mycode_b">Try-catch kullanım örnekleri</span>    <br />
<br />
<br />
Yukarıdaki örnekler sadece bir tek hata durumu içindi. İndeksin sınırlar dışına çıkması ya da sıfıra bölme gibi. Normal olarak yazdığımız programlarda birden fazla hata durumuyla karşılaşabiliriz. Bu durumda yapacağımız şey tek bir try bloğuna karşılık istediğimiz sayıda catch bloğu yazmaktır. Bu durumda bir hata oluştuğunda, oluşan hatanın tipine uygun olan catch bloğu yürütülecektir.  İşte örnek:<br />
<br />
using System;<br />
class Test<br />
{<br />
[STAThread]<br />
static void Main(string[] args)<br />
{<br />
int[] bolunen={2,4,6,8,10,12,14};<br />
int[] bolen={1,2,0,4,0};<br />
<br />
for (int i=0; i&lt;bolunen.Length;i++)<br />
{<br />
try<br />
{<br />
Console.WriteLine(bolunen[i] +" / "+ bolen[i] +" = " +bolunen[i]/bolen[i]);<br />
}<br />
catch (DivideByZeroException)<br />
{<br />
Console.WriteLine("Sıfıra bölme hatası oluştu..");<br />
}<br />
catch(IndexOutOfRangeException)<br />
{<br />
Console.WriteLine("Dizi üst sınırı aşıldı...");<br />
}<br />
}<br />
}<br />
}   <br />
<br />
Çıktı:<br />
<br />
2 / 1 = 2<br />
4 / 2 = 2<br />
Sıfıra bölme hatası oluştu..<br />
8 / 4 = 2<br />
Sıfıra bölme hatası oluştu..<br />
Dizi üst sınırı aşıldı&#8230;<br />
Dizi üst sınırı aşıldı&#8230;<br />
<br />
<br />
<img src="http://www.zohreanaforum.com/" loading="lazy"  alt="[Resim: www.zohreanaforum.com]" class="mycode_img" />[COLOR=#c5003f]Peki tüm hatalar için tek tek catch blokları mı yazmak zorundayız? Neyse ki hayır&#8230; Eğer catch bloğunda herhangi bir hata tipi belirtmezsek, oluşan hata  ne olursa olsun yakalanır&#8230;   <br />
<br />
try<br />
{<br />
// Hata kontrolünün yapılacağı kodlar<br />
}<br />
catch <br />
{<br />
// Bu şekilde bir kullanım ile tüm hataları yakalarız&#8230;<br />
}  <br />
<br />
<br />
        ]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# da .Wav Dosyalarını Çalmak.]]></title>
			<link>https://www.zohreanaforum.com/konu-c-da-wav-dosyalarini-calmak.html</link>
			<pubDate>Sun, 22 Feb 2009 16:49:54 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-da-wav-dosyalarini-calmak.html</guid>
			<description><![CDATA[Wav dosyası çalmak için metod.  <br />
private void PlaySound(string filename, int flags) <br />
{<br />
try <br />
{<br />
PlaySound(filename, 0, flags); // extern PlaySound'u çağır }<br />
catch(Exception e) <br />
{<br />
<br />
string errorMsg = " Ses calarken hata:<br />
" + filename + "<br />
" + "<br />
<br />
Stack Trace:<br />
" + e.StackTrace + "<br />
";<br />
MessageBox.Show(errorMsg, "hata", MessageBoxButtons.OK, MessageBoxIcon.Stop);<br />
App.Terminate();<br />
}<br />
}<br />
[DllImport("winmm.dll")]<br />
public static extern void PlaySound(string filename, int module, int flags);<br />
}<br />
  <br />
<br />
kullanımı:<br />
PlaySound("dong.wav",0x0001);<br />
<br />
<a href="mailto:alper@ktgcorp.com" class="mycode_email">Alper Kalaycıoğlu</a>  ]]></description>
			<content:encoded><![CDATA[Wav dosyası çalmak için metod.  <br />
private void PlaySound(string filename, int flags) <br />
{<br />
try <br />
{<br />
PlaySound(filename, 0, flags); // extern PlaySound'u çağır }<br />
catch(Exception e) <br />
{<br />
<br />
string errorMsg = " Ses calarken hata:<br />
" + filename + "<br />
" + "<br />
<br />
Stack Trace:<br />
" + e.StackTrace + "<br />
";<br />
MessageBox.Show(errorMsg, "hata", MessageBoxButtons.OK, MessageBoxIcon.Stop);<br />
App.Terminate();<br />
}<br />
}<br />
[DllImport("winmm.dll")]<br />
public static extern void PlaySound(string filename, int module, int flags);<br />
}<br />
  <br />
<br />
kullanımı:<br />
PlaySound("dong.wav",0x0001);<br />
<br />
<a href="mailto:alper@ktgcorp.com" class="mycode_email">Alper Kalaycıoğlu</a>  ]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# Kalıtım Nesneleri Oluşturma]]></title>
			<link>https://www.zohreanaforum.com/konu-c-kalitim-nesneleri-olusturma.html</link>
			<pubDate>Sun, 22 Feb 2009 16:48:40 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-kalitim-nesneleri-olusturma.html</guid>
			<description><![CDATA[// 1. sınıfımız<br />
public class Kullanici<br />
{<br />
int k_id;<br />
string adi;<br />
<br />
public int KID<br />
{<br />
    get { return k_id;  }<br />
    set { user_id = value; }<br />
}<br />
<br />
public string Adi<br />
{<br />
    get { return adi; }<br />
    set { adi = value; }<br />
}<br />
}<br />
<br />
// 2. sınıfımız<br />
public class Pass<br />
{<br />
int k_id;<br />
string sifre;<br />
<br />
public int KID<br />
{<br />
    get  { return k_id; }<br />
    set { user_id = value; }<br />
}<br />
<br />
public string Sifre<br />
{<br />
    get { return sifre; }<br />
    set { sifre = value; }<br />
}<br />
}<br />
<br />
//eğer veri tabanına bu nesneleri yollamak istiyorsanız... aşağıdaki methoda kalıtım yoluyla değerleri yollayabilirsiniz...<br />
//Bütün objectler için kullanılacak olan method.<br />
public void Kaydet(object obj)<br />
{<br />
    //obj tipine göre ilgili sql cümlesini oluştur.<br />
      sql = INSERT INTO User (Alan1, Alan2, &#8230;.. ,AlanN) VALUES (Deger1, Deger2, &#8230;., DegerN)       <br />
   //veritabanına sql cümlesini gönder. Böylece obj ilgili tabloya kaydedilmiş olacak.<br />
}<br />
<br />
<br />
**********************************************<br />
yukarıdaki örnektede olduğu gibi..<br />
.NET framework sınıf hiyerarşisinde bütün sınıflar birer nesnedir. Diğer yandan tüm nesneler, object sınıfından türetilmiştir. Fakat kalıtımın (inherit) direkt olarak object sınıfından yapıldığını belirtmeye gerek yoktur<br />
<br />
public class Nesnem : Object  -&gt; Açık bir şekilde belirtmeye gerek yok.<br />
{<br />
    //private &#8211; public - protected değişkenler<br />
    //methodlar<br />
}<br />
<br />
<br />
metoda object parametresini göndererek dinamik olarak nesneyi tanımlamak işimizi kolaylaştıracaktır.<br />
<br />
public void Method(object obj)<br />
{<br />
   .....<br />
}<br />
<br />
Method içerisinde obj tipinin tam olarak açığa çıkartılabilmesi için birden fazla yöntem mevcut. Bunlardan en basiti obj tipinin istediğiniz object tipinde olup olmadığına bakarak metodun ne yapacağına karar vermek. Bunu yukarıda da bahsettiğim gibi bütün sınıfların dolaylı olarak türetildiği Object sınıfının GetType() metodu ile yapıyoruz.<br />
<br />
<br />
Object sınıfında tanımlı 3 method daha var. Bunlar;<br />
<br />
bool Equals(object, [object])  -&gt; iki nesneyi karşılaştır eşit ise true, değilse false dönder<br />
int GetHashCode() -&gt; nesneyi aynı gruptaki diğer nesnelerden ayırmak için kullanılabilir. <br />
(Tablo PrimaryKeyID si dönderilebilinir mesela.)<br />
string ToString() -&gt; bu method ise türetilen sınıfta ezilmediği (override edilmediği) durumlarda sınıf adını verir. <br />
Bizim örnekte : Nesnem<br />
<br />
public override string ToString()<br />
{<br />
     return "Nesnenin adı = BenimNesnem";<br />
}<br />
<br />
public override int GetHashCode()<br />
{<br />
     return 1;<br />
}<br />
<br />
-------------------------------------------------------------------<br />
yazan:: Azer B.]]></description>
			<content:encoded><![CDATA[// 1. sınıfımız<br />
public class Kullanici<br />
{<br />
int k_id;<br />
string adi;<br />
<br />
public int KID<br />
{<br />
    get { return k_id;  }<br />
    set { user_id = value; }<br />
}<br />
<br />
public string Adi<br />
{<br />
    get { return adi; }<br />
    set { adi = value; }<br />
}<br />
}<br />
<br />
// 2. sınıfımız<br />
public class Pass<br />
{<br />
int k_id;<br />
string sifre;<br />
<br />
public int KID<br />
{<br />
    get  { return k_id; }<br />
    set { user_id = value; }<br />
}<br />
<br />
public string Sifre<br />
{<br />
    get { return sifre; }<br />
    set { sifre = value; }<br />
}<br />
}<br />
<br />
//eğer veri tabanına bu nesneleri yollamak istiyorsanız... aşağıdaki methoda kalıtım yoluyla değerleri yollayabilirsiniz...<br />
//Bütün objectler için kullanılacak olan method.<br />
public void Kaydet(object obj)<br />
{<br />
    //obj tipine göre ilgili sql cümlesini oluştur.<br />
      sql = INSERT INTO User (Alan1, Alan2, &#8230;.. ,AlanN) VALUES (Deger1, Deger2, &#8230;., DegerN)       <br />
   //veritabanına sql cümlesini gönder. Böylece obj ilgili tabloya kaydedilmiş olacak.<br />
}<br />
<br />
<br />
**********************************************<br />
yukarıdaki örnektede olduğu gibi..<br />
.NET framework sınıf hiyerarşisinde bütün sınıflar birer nesnedir. Diğer yandan tüm nesneler, object sınıfından türetilmiştir. Fakat kalıtımın (inherit) direkt olarak object sınıfından yapıldığını belirtmeye gerek yoktur<br />
<br />
public class Nesnem : Object  -&gt; Açık bir şekilde belirtmeye gerek yok.<br />
{<br />
    //private &#8211; public - protected değişkenler<br />
    //methodlar<br />
}<br />
<br />
<br />
metoda object parametresini göndererek dinamik olarak nesneyi tanımlamak işimizi kolaylaştıracaktır.<br />
<br />
public void Method(object obj)<br />
{<br />
   .....<br />
}<br />
<br />
Method içerisinde obj tipinin tam olarak açığa çıkartılabilmesi için birden fazla yöntem mevcut. Bunlardan en basiti obj tipinin istediğiniz object tipinde olup olmadığına bakarak metodun ne yapacağına karar vermek. Bunu yukarıda da bahsettiğim gibi bütün sınıfların dolaylı olarak türetildiği Object sınıfının GetType() metodu ile yapıyoruz.<br />
<br />
<br />
Object sınıfında tanımlı 3 method daha var. Bunlar;<br />
<br />
bool Equals(object, [object])  -&gt; iki nesneyi karşılaştır eşit ise true, değilse false dönder<br />
int GetHashCode() -&gt; nesneyi aynı gruptaki diğer nesnelerden ayırmak için kullanılabilir. <br />
(Tablo PrimaryKeyID si dönderilebilinir mesela.)<br />
string ToString() -&gt; bu method ise türetilen sınıfta ezilmediği (override edilmediği) durumlarda sınıf adını verir. <br />
Bizim örnekte : Nesnem<br />
<br />
public override string ToString()<br />
{<br />
     return "Nesnenin adı = BenimNesnem";<br />
}<br />
<br />
public override int GetHashCode()<br />
{<br />
     return 1;<br />
}<br />
<br />
-------------------------------------------------------------------<br />
yazan:: Azer B.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# da Formlar Arası Veri Taşınması]]></title>
			<link>https://www.zohreanaforum.com/konu-c-da-formlar-arasi-veri-tasinmasi.html</link>
			<pubDate>Sun, 22 Feb 2009 16:47:33 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-da-formlar-arasi-veri-tasinmasi.html</guid>
			<description><![CDATA[Bir formdan diğer bir form çağrılması, çağrılan formdan girilen verilerin ana formda alınması.        Bu dokümanı gerek programlama.com un formunda gelen sorularda gerekse bana doğrudan gelen sorular üzerine yazma ihtiyacı duydum. Bu dokümanda oluşturduğumuz bir c# windows uygulamasında birden fazla formu nasıl kullanacağımızı, formlar arasında veri alışverişini nasıl yapacağımızı anlatacağım.<br />
<br />
<br />
     Microsoft .net i ya da sharpdevelop u açtığımızda windows uygulaması dediğimiz de  bu derleyiciler ekrana bir main form getirir. Eğer uygulamaya koyacağımız program bir den fazla formu gerektiriyorsa solution explorer penceresinde add new item sekmesi ile ikinci bir form oluşturabiliriz. Bu oluşan ikinci form tamamen birinci formdan ayrı olarak düşünebiliriz. Bu form sınıf hiyerarşisi içerisinde düşündüğümüzde ayrı bir sınıf olarak gözükür. Biz bu formu ana formumuzda o tipte nesne oluşturararak kullanabiliriz.<br />
<br />
<br />
     Ana formumuzun ismi form1 ikinci oluşturduğumuz form ise form2 isminde olsun. <br />
<br />
Form1 de form2 cinsinde bir nesne oluşturmak için. <br />
Form2 ikincipencere=new Form2();<br />
şeklind tanımlama yapabiliriz. Burada Form2 tipinde bir nesne oluşturuyoruz bu nesnenin ismi ise ikincipencere dir. Bu pencereyi ekrana çıkarmak için ikincipencere.Show() yazılır.<br />
<br />
<br />
     Yukarıda anlatıklarımızla ikinci bir form oluşturduk ve bunu ekrana çıkardık. Şimdi ise ikinci formdan ana forma nasıl veri taşınacağını anlatacağız. Bunu yapmak için global değişkenler atamalıyız. C# da global değişkenin tanımlaması static sözcüğü kullanılır. Aşağıda tanımladığımız değişkenler gösterilmektedir.<br />
<br />
public static int intdeger;<br />
public static double doubdeger;<br />
public static string stdeger;<br />
<br />
<br />
     İkinci formda ise bu değişkenlere <br />
<br />
Form1.intdeger=Convert.ToInt32(textBox1.Text);<br />
Form1.doubdeger=Convert.ToDouble(textBox2.Text);<br />
Form1.stdeger=textBox3.Text;]]></description>
			<content:encoded><![CDATA[Bir formdan diğer bir form çağrılması, çağrılan formdan girilen verilerin ana formda alınması.        Bu dokümanı gerek programlama.com un formunda gelen sorularda gerekse bana doğrudan gelen sorular üzerine yazma ihtiyacı duydum. Bu dokümanda oluşturduğumuz bir c# windows uygulamasında birden fazla formu nasıl kullanacağımızı, formlar arasında veri alışverişini nasıl yapacağımızı anlatacağım.<br />
<br />
<br />
     Microsoft .net i ya da sharpdevelop u açtığımızda windows uygulaması dediğimiz de  bu derleyiciler ekrana bir main form getirir. Eğer uygulamaya koyacağımız program bir den fazla formu gerektiriyorsa solution explorer penceresinde add new item sekmesi ile ikinci bir form oluşturabiliriz. Bu oluşan ikinci form tamamen birinci formdan ayrı olarak düşünebiliriz. Bu form sınıf hiyerarşisi içerisinde düşündüğümüzde ayrı bir sınıf olarak gözükür. Biz bu formu ana formumuzda o tipte nesne oluşturararak kullanabiliriz.<br />
<br />
<br />
     Ana formumuzun ismi form1 ikinci oluşturduğumuz form ise form2 isminde olsun. <br />
<br />
Form1 de form2 cinsinde bir nesne oluşturmak için. <br />
Form2 ikincipencere=new Form2();<br />
şeklind tanımlama yapabiliriz. Burada Form2 tipinde bir nesne oluşturuyoruz bu nesnenin ismi ise ikincipencere dir. Bu pencereyi ekrana çıkarmak için ikincipencere.Show() yazılır.<br />
<br />
<br />
     Yukarıda anlatıklarımızla ikinci bir form oluşturduk ve bunu ekrana çıkardık. Şimdi ise ikinci formdan ana forma nasıl veri taşınacağını anlatacağız. Bunu yapmak için global değişkenler atamalıyız. C# da global değişkenin tanımlaması static sözcüğü kullanılır. Aşağıda tanımladığımız değişkenler gösterilmektedir.<br />
<br />
public static int intdeger;<br />
public static double doubdeger;<br />
public static string stdeger;<br />
<br />
<br />
     İkinci formda ise bu değişkenlere <br />
<br />
Form1.intdeger=Convert.ToInt32(textBox1.Text);<br />
Form1.doubdeger=Convert.ToDouble(textBox2.Text);<br />
Form1.stdeger=textBox3.Text;]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# Asal Sayı Programı]]></title>
			<link>https://www.zohreanaforum.com/konu-c-asal-sayi-programi.html</link>
			<pubDate>Sun, 22 Feb 2009 16:46:23 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-asal-sayi-programi.html</guid>
			<description><![CDATA[Kullanılan C# kavramları : Asynchronous Threading, Windows Forms, Components, Exception Handling, etc  //  Prime Numbers. Â© 2005 Halil Özgür - halil.ozgur [at] gmail.com<br />
<br />
using System;<br />
using System.ComponentModel;<br />
using System.Drawing;<br />
using System.IO;<br />
using System.Threading;<br />
using System********s.Forms;<br />
<br />
namespace isPrime<br />
{<br />
    /// &lt;summary&gt;<br />
    /// isPrimeForm : Main and the only Form.<br />
    /// &lt;/summary&gt;<br />
    public class isPrimeForm : System********s.Forms.Form<br />
    {<br />
        #region Declarations, Ctor &amp; Dispose()<br />
<br />
        private System.Threading.Thread PrimeTesterThread;<br />
        private delegate void testCompleteHandler(bool isPrime,ulong catched);<br />
        private event testCompleteHandler testComplete;<br />
<br />
        private System.Threading.Thread RangeTesterThread;<br />
        private delegate void rangeTestCompleteHandler();<br />
        private event rangeTestCompleteHandler rangeTestComplete;<br />
<br />
        private decimal number = 0m , rangeStart = 0m , rangeEnd = 0m , ct = 0m;<br />
        private string firstLine = "";<br />
<br />
        private System********s.Forms.GroupBox groupBoxInput;<br />
        private System********s.Forms.ProgressBar progressBar;<br />
        private System********s.Forms.TextBox textBoxInput;<br />
        private System********s.Forms.Button buttonClear;<br />
        private System********s.Forms.TabControl tabControl;<br />
        private System********s.Forms.TabPage tabPageSingle;<br />
        private System********s.Forms.TabPage tabPageRange;<br />
        private System********s.Forms.TextBox textBoxRangeStart;<br />
        private System********s.Forms.TextBox textBoxRangeEnd;<br />
        private System********s.Forms.Label labelRangeTo;<br />
        private System********s.Forms.Label labelRangeFrom;<br />
        private System********s.Forms.LinkLabel linkLabel;<br />
        private System********s.Forms.Label labelInfoSingle;<br />
        private System********s.Forms.Button buttonTest;<br />
        private System********s.Forms.Button buttonStart;<br />
        private System********s.Forms.TextBox textBoxRangeResults;<br />
        private System********s.Forms.TextBox textBoxStatusSingle;<br />
        private System********s.Forms.Button buttonCancelRange;<br />
        private System********s.Forms.ProgressBar progressBarRange;<br />
        private System********s.Forms.Button buttonSave;<br />
        private System********s.Forms.SaveFileDialog saveFileDialog;<br />
        private System********s.Forms.Label labelNumberCount;<br />
        private System********s.Forms.CheckBox checkBoxNC;<br />
        private System********s.Forms.Button buttonCancel;<br />
<br />
        public isPrimeForm()<br />
        {<br />
            InitializeComponent();<br />
            this.testComplete += new testCompleteHandler(this.testHandler);<br />
            this.rangeTestComplete += new rangeTestCompleteHandler(this.rangeTestHandler);<br />
        }<br />
<br />
        protected override void Dispose( bool disposing )<br />
        {<br />
            if ( this.PrimeTesterThread != null )<br />
                this.PrimeTesterThread.Abort();<br />
            if ( this.RangeTesterThread != null )<br />
                 this.RangeTesterThread.Abort();<br />
            base.Dispose( disposing );<br />
        }<br />
        #endregion<br />
        #region Windows Form Designer generated code<br />
        private void InitializeComponent()<br />
        {<br />
            // ...<br />
            // InitializeComponent() kısmı.<br />
            // ...<br />
        }<br />
        [STAThread]<br />
        static void Main() <br />
        {<br />
            Application.Run(new isPrimeForm());<br />
        }<br />
        #endregion<br />
<br />
        private void isPrimeForm_Load(object sender, System.EventArgs e)<br />
        {<br />
            this.Size = new Size( 327 , 295 );<br />
        }<br />
<br />
        private void buttonTest_Click(object sender, System.EventArgs e)<br />
        {<br />
            string msg;<br />
            if ( validateInput( this.textBoxInput.Text , out this.number , out msg ) ) <br />
            {<br />
                this.buttonClear.Enabled = this.buttonTest.Enabled = this.textBoxInput.Enabled = false;<br />
                this.buttonCancel.Enabled = true;<br />
                this.CancelButton = this.buttonCancel;<br />
                this.labelInfoSingle.Text = "[ ESC = cancel ]";<br />
                this.tabPageSingle.Cursor = Cursors.WaitCursor;<br />
                this.firstLine = this.number.ToString( "N0" ) + "\r\n\r\n";<br />
                this.textBoxStatusSingle.Text = firstLine + "Testing...";<br />
                this.progressBar.Value = 0;<br />
                this.progressBar.Show();<br />
                this.progressBar.Select();<br />
                this.PrimeTesterThread = new Thread(new ThreadStart(this.primeTestThreadStart));<br />
                this.PrimeTesterThread.Start();<br />
            }<br />
            else<br />
            {<br />
                this.textBoxStatusSingle.Text = msg;<br />
                this.textBoxInput.Focus();<br />
            }<br />
        }<br />
<br />
        private void buttonStart_Click(object sender, System.EventArgs e)<br />
        {<br />
            string msg;<br />
            if ( this.validateInput( this.textBoxRangeStart.Text , out this.rangeStart , out msg )<br />
                &amp;&amp; this.validateInput( this.textBoxRangeEnd.Text , out this.rangeEnd , out msg ) )<br />
            {<br />
                this.textBoxRangeStart.Enabled = this.textBoxRangeEnd.Enabled = this.buttonSave.Enabled<br />
                    = this.buttonStart.Enabled = this.textBoxRangeResults.Enabled = false;<br />
                this.buttonCancelRange.Enabled = true;<br />
                this.tabPageRange.Cursor = Cursors.WaitCursor;<br />
                this.textBoxRangeResults.Clear();<br />
                this.labelNumberCount.Show();<br />
                this.progressBarRange.Value = 0;<br />
                this.progressBarRange.Show();<br />
                this.progressBarRange.Select();<br />
                this.RangeTesterThread = new Thread(new ThreadStart(this.rangeTestThreadStart));<br />
                this.RangeTesterThread.Start();<br />
            }<br />
            else<br />
                this.textBoxRangeResults.Text = msg;<br />
        }<br />
<br />
        private void buttonCancel_Click(object sender, System.EventArgs e)<br />
        {<br />
            this.PrimeTesterThread.Abort();<br />
            this.textBoxStatusSingle.Text = this.firstLine + "Canceled.";<br />
            this.testEnd();<br />
        }<br />
        <br />
        private void buttonCancelRange_Click(object sender, System.EventArgs e)<br />
        {<br />
            this.RangeTesterThread.Abort();<br />
            this.textBoxRangeResults.AppendText( "Canceled.\r\n" );<br />
            this.rangeTestEnd();<br />
        }<br />
<br />
        private void buttonClear_Click(object sender, System.EventArgs e)<br />
        {<br />
            this.textBoxInput.Text = "";<br />
            this.textBoxInput.Focus();<br />
        }<br />
<br />
        private void testHandler(bool isPrime,ulong catched)<br />
        {<br />
            this.BeginInvoke(new testCompleteHandler(this.test_Complete) ,<br />
                new Object[] { isPrime , catched } );<br />
        }<br />
<br />
        private void rangeTestHandler()<br />
        {<br />
            this.BeginInvoke(new rangeTestCompleteHandler(this.rangeTest_Complete));<br />
        }<br />
<br />
        private void test_Complete(bool isPrime,ulong catched)<br />
        {<br />
            this.PrimeTesterThread.Abort();<br />
            if ( isPrime )<br />
                this.textBoxStatusSingle.Text = firstLine + "PRIME.";<br />
            else if ( catched &gt; 0 )<br />
                this.textBoxStatusSingle.Text = firstLine + "NOT Prime, divisible to " + catched.ToString("N0");<br />
            else<br />
                this.textBoxStatusSingle.Text = firstLine + "NOT Prime.";<br />
            this.testEnd();<br />
        }<br />
<br />
        private void rangeTest_Complete()<br />
        {<br />
            this.RangeTesterThread.Abort();<br />
            this.rangeTestEnd();<br />
        }<br />
<br />
        private void testEnd()<br />
        {<br />
            this.PrimeTesterThread = null;<br />
            GC.Collect();<br />
            this.buttonClear.Enabled = this.buttonTest.Enabled = this.textBoxInput.Enabled = true;<br />
            this.buttonCancel.Enabled = false;<br />
            this.CancelButton = this.buttonClear;<br />
            this.tabPageSingle.Cursor = Cursors.Default;<br />
            this.labelInfoSingle.Text = "[ ENTER = test , ESC = clear ]";<br />
            this.progressBar.Hide();<br />
            this.textBoxInput.Focus();<br />
        }<br />
<br />
        private void rangeTestEnd()<br />
        {<br />
            this.textBoxRangeResults.AppendText( "Number Count : " + this.ct.ToString( "N0" ) + "\r\n" );<br />
            this.RangeTesterThread = null;<br />
            GC.Collect();<br />
            this.buttonStart.Enabled = this.textBoxRangeStart.Enabled = this.buttonSave.Enabled<br />
                = this.textBoxRangeEnd.Enabled = this.textBoxRangeResults.Enabled = true;<br />
            this.buttonCancelRange.Enabled = false;<br />
            this.labelNumberCount.Hide();<br />
            this.tabPageRange.Cursor = Cursors.Default;<br />
            this.progressBarRange.Hide();<br />
            this.textBoxRangeStart.Focus();<br />
        }<br />
<br />
        private void primeTestThreadStart()<br />
        {<br />
            ulong result = this.primeTest( this.number );<br />
            switch ( result ) <br />
            {<br />
                case 1:<br />
                    this.testComplete( true , 1 );<br />
                    break;<br />
                default:<br />
                    this.testComplete( false , result );<br />
                    break;<br />
            }<br />
        }<br />
<br />
        private void rangeTestThreadStart()<br />
        {<br />
            ulong result;<br />
            decimal start = 0m , end = this.ct = 0m;<br />
<br />
            if ( this.rangeStart &lt; 2 )<br />
                start = 1;<br />
            else<br />
                start = this.rangeStart;<br />
<br />
            if ( this.rangeEnd &lt; 2 )<br />
                end = 1;<br />
            else<br />
                end = this.rangeEnd;<br />
<br />
            if ( start &gt; end )<br />
            {<br />
                decimal temp = start;<br />
                start = end;<br />
                end = temp;<br />
            }<br />
<br />
            this.textBoxRangeResults.AppendText( "Prime numbers between " + this.rangeStart.ToString("N0") + " and " + this.rangeEnd.ToString("N0") + " :\r\n" );<br />
            decimal numbers = (decimal)Math.Ceiling( ((double)((this.rangeEnd - this.rangeStart)/50)) );<br />
            decimal step_r = ( (numbers)%2 == 0 ? numbers + 1 : numbers );<br />
            start--;<br />
            while ( end &gt; start++ )<br />
            {<br />
                result = this.primeTest(start);<br />
                if ( result == 1 )<br />
                {<br />
                    this.textBoxRangeResults.AppendText( start.ToString( "N0" ) + "\r\n" );<br />
                    this.ct++;<br />
                    if ( this.checkBoxNC.Checked )<br />
                        this.labelNumberCount.Text = "Number Count :\r\n" + ct.ToString("N0");<br />
                }<br />
                if ( start % step_r == 0 )<br />
                    this.progressBarRange.PerformStep();<br />
            }            <br />
            this.rangeTestComplete();<br />
        }<br />
<br />
        private ulong primeTest( decimal n )<br />
        {<br />
            if ( n &lt; 2 )<br />
                return 0;<br />
            if  ( n == 2 || n == 3 )<br />
                return 1;<br />
            if ( n % 2 == 0 )<br />
                return 2;<br />
            else<br />
            {<br />
                ulong end = (ulong)Math.Ceiling( Math.Sqrt( (double)n ) ) + 1;<br />
                ulong step = ( (end/60) % 2 == 0 ? end/60 + 1 : end/60 );<br />
                for ( ulong i = 3 ; i &lt;= end ; i += 2 ) <br />
                {<br />
                    if  ( n % i == 0 )<br />
                        return i;<br />
                    if ( i % step == 0 )<br />
                        this.progressBar.PerformStep();<br />
                }<br />
                return 1;<br />
            }<br />
        }<br />
<br />
        private bool validateInput( string s , out decimal n , out string errMsg )<br />
        {<br />
            n = 0m;<br />
            errMsg = null;<br />
            if ( s.Length == 0 )<br />
            {<br />
                errMsg = "\r\nENTER A NUMBER TO TEST";<br />
                return false;<br />
            }<br />
            try<br />
            {<br />
                n = Convert.ToDecimal(s);<br />
            }<br />
            catch ( System.FormatException )<br />
            {<br />
                errMsg  = "ENTER A POSITIVE INTEGER,\r\nNOT A STRING <img src="https://www.zohreanaforum.com/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_2" />";<br />
                return false;<br />
            }<br />
            catch ( System.OverflowException )<br />
            {<br />
                errMsg = "ENTER AN INTEGER\r\nBETWEEN 2^96 and - (2^96)";<br />
                return false;<br />
            }<br />
            return true;<br />
        }<br />
<br />
        private void linkLabel_LinkClicked(object sender, System********s.Forms.LinkLabelLinkClickedEventArgs e)<br />
        {<br />
            System.Diagnostics.Process.Start("mailto:halil.ozgur@gmail.com?subject=about isPrime");<br />
        }<br />
<br />
        private void tabControl_SelectedIndexChanged(object sender, System.EventArgs e)<br />
        {<br />
            if ( this.tabControl.SelectedIndex == 0 )<br />
            {<br />
                this.Size = new Size( 327 , 295 );<br />
                this.textBoxInput.Focus();<br />
            }<br />
            else<br />
            {<br />
                this.Size = new Size( 336 , 368 );<br />
                this.textBoxRangeStart.Focus();<br />
            }<br />
        }<br />
<br />
        private void buttonSave_Click(object sender, System.EventArgs e)<br />
        {<br />
            this.saveFileDialog.ShowDialog();<br />
        }<br />
<br />
        private void saveFileDialog_FileOk(object sender, System.ComponentModel.CancelEventArgs e)<br />
        {<br />
            StreamWriter sw = new StreamWriter( this.saveFileDialog.FileName );<br />
            sw.Write( this.textBoxRangeResults.Text );<br />
            sw.Close();<br />
        }<br />
<br />
        private void textBoxes_DragEnter(object sender, System********s.Forms.DragEventArgs e)<br />
        {<br />
            if (e.Data.GetDataPresent(DataFormats.Text)) <br />
                e.Effect = DragDropEffects.Copy;<br />
            else<br />
                e.Effect = DragDropEffects.None;<br />
        }<br />
<br />
        private void textBoxes_DragDrop(object sender, System********s.Forms.DragEventArgs e)<br />
        {<br />
            ((TextBox)sender).Text = e.Data.GetData(DataFormats.Text).ToString();<br />
        }<br />
<br />
    }<br />
}  ]]></description>
			<content:encoded><![CDATA[Kullanılan C# kavramları : Asynchronous Threading, Windows Forms, Components, Exception Handling, etc  //  Prime Numbers. Â© 2005 Halil Özgür - halil.ozgur [at] gmail.com<br />
<br />
using System;<br />
using System.ComponentModel;<br />
using System.Drawing;<br />
using System.IO;<br />
using System.Threading;<br />
using System********s.Forms;<br />
<br />
namespace isPrime<br />
{<br />
    /// &lt;summary&gt;<br />
    /// isPrimeForm : Main and the only Form.<br />
    /// &lt;/summary&gt;<br />
    public class isPrimeForm : System********s.Forms.Form<br />
    {<br />
        #region Declarations, Ctor &amp; Dispose()<br />
<br />
        private System.Threading.Thread PrimeTesterThread;<br />
        private delegate void testCompleteHandler(bool isPrime,ulong catched);<br />
        private event testCompleteHandler testComplete;<br />
<br />
        private System.Threading.Thread RangeTesterThread;<br />
        private delegate void rangeTestCompleteHandler();<br />
        private event rangeTestCompleteHandler rangeTestComplete;<br />
<br />
        private decimal number = 0m , rangeStart = 0m , rangeEnd = 0m , ct = 0m;<br />
        private string firstLine = "";<br />
<br />
        private System********s.Forms.GroupBox groupBoxInput;<br />
        private System********s.Forms.ProgressBar progressBar;<br />
        private System********s.Forms.TextBox textBoxInput;<br />
        private System********s.Forms.Button buttonClear;<br />
        private System********s.Forms.TabControl tabControl;<br />
        private System********s.Forms.TabPage tabPageSingle;<br />
        private System********s.Forms.TabPage tabPageRange;<br />
        private System********s.Forms.TextBox textBoxRangeStart;<br />
        private System********s.Forms.TextBox textBoxRangeEnd;<br />
        private System********s.Forms.Label labelRangeTo;<br />
        private System********s.Forms.Label labelRangeFrom;<br />
        private System********s.Forms.LinkLabel linkLabel;<br />
        private System********s.Forms.Label labelInfoSingle;<br />
        private System********s.Forms.Button buttonTest;<br />
        private System********s.Forms.Button buttonStart;<br />
        private System********s.Forms.TextBox textBoxRangeResults;<br />
        private System********s.Forms.TextBox textBoxStatusSingle;<br />
        private System********s.Forms.Button buttonCancelRange;<br />
        private System********s.Forms.ProgressBar progressBarRange;<br />
        private System********s.Forms.Button buttonSave;<br />
        private System********s.Forms.SaveFileDialog saveFileDialog;<br />
        private System********s.Forms.Label labelNumberCount;<br />
        private System********s.Forms.CheckBox checkBoxNC;<br />
        private System********s.Forms.Button buttonCancel;<br />
<br />
        public isPrimeForm()<br />
        {<br />
            InitializeComponent();<br />
            this.testComplete += new testCompleteHandler(this.testHandler);<br />
            this.rangeTestComplete += new rangeTestCompleteHandler(this.rangeTestHandler);<br />
        }<br />
<br />
        protected override void Dispose( bool disposing )<br />
        {<br />
            if ( this.PrimeTesterThread != null )<br />
                this.PrimeTesterThread.Abort();<br />
            if ( this.RangeTesterThread != null )<br />
                 this.RangeTesterThread.Abort();<br />
            base.Dispose( disposing );<br />
        }<br />
        #endregion<br />
        #region Windows Form Designer generated code<br />
        private void InitializeComponent()<br />
        {<br />
            // ...<br />
            // InitializeComponent() kısmı.<br />
            // ...<br />
        }<br />
        [STAThread]<br />
        static void Main() <br />
        {<br />
            Application.Run(new isPrimeForm());<br />
        }<br />
        #endregion<br />
<br />
        private void isPrimeForm_Load(object sender, System.EventArgs e)<br />
        {<br />
            this.Size = new Size( 327 , 295 );<br />
        }<br />
<br />
        private void buttonTest_Click(object sender, System.EventArgs e)<br />
        {<br />
            string msg;<br />
            if ( validateInput( this.textBoxInput.Text , out this.number , out msg ) ) <br />
            {<br />
                this.buttonClear.Enabled = this.buttonTest.Enabled = this.textBoxInput.Enabled = false;<br />
                this.buttonCancel.Enabled = true;<br />
                this.CancelButton = this.buttonCancel;<br />
                this.labelInfoSingle.Text = "[ ESC = cancel ]";<br />
                this.tabPageSingle.Cursor = Cursors.WaitCursor;<br />
                this.firstLine = this.number.ToString( "N0" ) + "\r\n\r\n";<br />
                this.textBoxStatusSingle.Text = firstLine + "Testing...";<br />
                this.progressBar.Value = 0;<br />
                this.progressBar.Show();<br />
                this.progressBar.Select();<br />
                this.PrimeTesterThread = new Thread(new ThreadStart(this.primeTestThreadStart));<br />
                this.PrimeTesterThread.Start();<br />
            }<br />
            else<br />
            {<br />
                this.textBoxStatusSingle.Text = msg;<br />
                this.textBoxInput.Focus();<br />
            }<br />
        }<br />
<br />
        private void buttonStart_Click(object sender, System.EventArgs e)<br />
        {<br />
            string msg;<br />
            if ( this.validateInput( this.textBoxRangeStart.Text , out this.rangeStart , out msg )<br />
                &amp;&amp; this.validateInput( this.textBoxRangeEnd.Text , out this.rangeEnd , out msg ) )<br />
            {<br />
                this.textBoxRangeStart.Enabled = this.textBoxRangeEnd.Enabled = this.buttonSave.Enabled<br />
                    = this.buttonStart.Enabled = this.textBoxRangeResults.Enabled = false;<br />
                this.buttonCancelRange.Enabled = true;<br />
                this.tabPageRange.Cursor = Cursors.WaitCursor;<br />
                this.textBoxRangeResults.Clear();<br />
                this.labelNumberCount.Show();<br />
                this.progressBarRange.Value = 0;<br />
                this.progressBarRange.Show();<br />
                this.progressBarRange.Select();<br />
                this.RangeTesterThread = new Thread(new ThreadStart(this.rangeTestThreadStart));<br />
                this.RangeTesterThread.Start();<br />
            }<br />
            else<br />
                this.textBoxRangeResults.Text = msg;<br />
        }<br />
<br />
        private void buttonCancel_Click(object sender, System.EventArgs e)<br />
        {<br />
            this.PrimeTesterThread.Abort();<br />
            this.textBoxStatusSingle.Text = this.firstLine + "Canceled.";<br />
            this.testEnd();<br />
        }<br />
        <br />
        private void buttonCancelRange_Click(object sender, System.EventArgs e)<br />
        {<br />
            this.RangeTesterThread.Abort();<br />
            this.textBoxRangeResults.AppendText( "Canceled.\r\n" );<br />
            this.rangeTestEnd();<br />
        }<br />
<br />
        private void buttonClear_Click(object sender, System.EventArgs e)<br />
        {<br />
            this.textBoxInput.Text = "";<br />
            this.textBoxInput.Focus();<br />
        }<br />
<br />
        private void testHandler(bool isPrime,ulong catched)<br />
        {<br />
            this.BeginInvoke(new testCompleteHandler(this.test_Complete) ,<br />
                new Object[] { isPrime , catched } );<br />
        }<br />
<br />
        private void rangeTestHandler()<br />
        {<br />
            this.BeginInvoke(new rangeTestCompleteHandler(this.rangeTest_Complete));<br />
        }<br />
<br />
        private void test_Complete(bool isPrime,ulong catched)<br />
        {<br />
            this.PrimeTesterThread.Abort();<br />
            if ( isPrime )<br />
                this.textBoxStatusSingle.Text = firstLine + "PRIME.";<br />
            else if ( catched &gt; 0 )<br />
                this.textBoxStatusSingle.Text = firstLine + "NOT Prime, divisible to " + catched.ToString("N0");<br />
            else<br />
                this.textBoxStatusSingle.Text = firstLine + "NOT Prime.";<br />
            this.testEnd();<br />
        }<br />
<br />
        private void rangeTest_Complete()<br />
        {<br />
            this.RangeTesterThread.Abort();<br />
            this.rangeTestEnd();<br />
        }<br />
<br />
        private void testEnd()<br />
        {<br />
            this.PrimeTesterThread = null;<br />
            GC.Collect();<br />
            this.buttonClear.Enabled = this.buttonTest.Enabled = this.textBoxInput.Enabled = true;<br />
            this.buttonCancel.Enabled = false;<br />
            this.CancelButton = this.buttonClear;<br />
            this.tabPageSingle.Cursor = Cursors.Default;<br />
            this.labelInfoSingle.Text = "[ ENTER = test , ESC = clear ]";<br />
            this.progressBar.Hide();<br />
            this.textBoxInput.Focus();<br />
        }<br />
<br />
        private void rangeTestEnd()<br />
        {<br />
            this.textBoxRangeResults.AppendText( "Number Count : " + this.ct.ToString( "N0" ) + "\r\n" );<br />
            this.RangeTesterThread = null;<br />
            GC.Collect();<br />
            this.buttonStart.Enabled = this.textBoxRangeStart.Enabled = this.buttonSave.Enabled<br />
                = this.textBoxRangeEnd.Enabled = this.textBoxRangeResults.Enabled = true;<br />
            this.buttonCancelRange.Enabled = false;<br />
            this.labelNumberCount.Hide();<br />
            this.tabPageRange.Cursor = Cursors.Default;<br />
            this.progressBarRange.Hide();<br />
            this.textBoxRangeStart.Focus();<br />
        }<br />
<br />
        private void primeTestThreadStart()<br />
        {<br />
            ulong result = this.primeTest( this.number );<br />
            switch ( result ) <br />
            {<br />
                case 1:<br />
                    this.testComplete( true , 1 );<br />
                    break;<br />
                default:<br />
                    this.testComplete( false , result );<br />
                    break;<br />
            }<br />
        }<br />
<br />
        private void rangeTestThreadStart()<br />
        {<br />
            ulong result;<br />
            decimal start = 0m , end = this.ct = 0m;<br />
<br />
            if ( this.rangeStart &lt; 2 )<br />
                start = 1;<br />
            else<br />
                start = this.rangeStart;<br />
<br />
            if ( this.rangeEnd &lt; 2 )<br />
                end = 1;<br />
            else<br />
                end = this.rangeEnd;<br />
<br />
            if ( start &gt; end )<br />
            {<br />
                decimal temp = start;<br />
                start = end;<br />
                end = temp;<br />
            }<br />
<br />
            this.textBoxRangeResults.AppendText( "Prime numbers between " + this.rangeStart.ToString("N0") + " and " + this.rangeEnd.ToString("N0") + " :\r\n" );<br />
            decimal numbers = (decimal)Math.Ceiling( ((double)((this.rangeEnd - this.rangeStart)/50)) );<br />
            decimal step_r = ( (numbers)%2 == 0 ? numbers + 1 : numbers );<br />
            start--;<br />
            while ( end &gt; start++ )<br />
            {<br />
                result = this.primeTest(start);<br />
                if ( result == 1 )<br />
                {<br />
                    this.textBoxRangeResults.AppendText( start.ToString( "N0" ) + "\r\n" );<br />
                    this.ct++;<br />
                    if ( this.checkBoxNC.Checked )<br />
                        this.labelNumberCount.Text = "Number Count :\r\n" + ct.ToString("N0");<br />
                }<br />
                if ( start % step_r == 0 )<br />
                    this.progressBarRange.PerformStep();<br />
            }            <br />
            this.rangeTestComplete();<br />
        }<br />
<br />
        private ulong primeTest( decimal n )<br />
        {<br />
            if ( n &lt; 2 )<br />
                return 0;<br />
            if  ( n == 2 || n == 3 )<br />
                return 1;<br />
            if ( n % 2 == 0 )<br />
                return 2;<br />
            else<br />
            {<br />
                ulong end = (ulong)Math.Ceiling( Math.Sqrt( (double)n ) ) + 1;<br />
                ulong step = ( (end/60) % 2 == 0 ? end/60 + 1 : end/60 );<br />
                for ( ulong i = 3 ; i &lt;= end ; i += 2 ) <br />
                {<br />
                    if  ( n % i == 0 )<br />
                        return i;<br />
                    if ( i % step == 0 )<br />
                        this.progressBar.PerformStep();<br />
                }<br />
                return 1;<br />
            }<br />
        }<br />
<br />
        private bool validateInput( string s , out decimal n , out string errMsg )<br />
        {<br />
            n = 0m;<br />
            errMsg = null;<br />
            if ( s.Length == 0 )<br />
            {<br />
                errMsg = "\r\nENTER A NUMBER TO TEST";<br />
                return false;<br />
            }<br />
            try<br />
            {<br />
                n = Convert.ToDecimal(s);<br />
            }<br />
            catch ( System.FormatException )<br />
            {<br />
                errMsg  = "ENTER A POSITIVE INTEGER,\r\nNOT A STRING <img src="https://www.zohreanaforum.com/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_2" />";<br />
                return false;<br />
            }<br />
            catch ( System.OverflowException )<br />
            {<br />
                errMsg = "ENTER AN INTEGER\r\nBETWEEN 2^96 and - (2^96)";<br />
                return false;<br />
            }<br />
            return true;<br />
        }<br />
<br />
        private void linkLabel_LinkClicked(object sender, System********s.Forms.LinkLabelLinkClickedEventArgs e)<br />
        {<br />
            System.Diagnostics.Process.Start("mailto:halil.ozgur@gmail.com?subject=about isPrime");<br />
        }<br />
<br />
        private void tabControl_SelectedIndexChanged(object sender, System.EventArgs e)<br />
        {<br />
            if ( this.tabControl.SelectedIndex == 0 )<br />
            {<br />
                this.Size = new Size( 327 , 295 );<br />
                this.textBoxInput.Focus();<br />
            }<br />
            else<br />
            {<br />
                this.Size = new Size( 336 , 368 );<br />
                this.textBoxRangeStart.Focus();<br />
            }<br />
        }<br />
<br />
        private void buttonSave_Click(object sender, System.EventArgs e)<br />
        {<br />
            this.saveFileDialog.ShowDialog();<br />
        }<br />
<br />
        private void saveFileDialog_FileOk(object sender, System.ComponentModel.CancelEventArgs e)<br />
        {<br />
            StreamWriter sw = new StreamWriter( this.saveFileDialog.FileName );<br />
            sw.Write( this.textBoxRangeResults.Text );<br />
            sw.Close();<br />
        }<br />
<br />
        private void textBoxes_DragEnter(object sender, System********s.Forms.DragEventArgs e)<br />
        {<br />
            if (e.Data.GetDataPresent(DataFormats.Text)) <br />
                e.Effect = DragDropEffects.Copy;<br />
            else<br />
                e.Effect = DragDropEffects.None;<br />
        }<br />
<br />
        private void textBoxes_DragDrop(object sender, System********s.Forms.DragEventArgs e)<br />
        {<br />
            ((TextBox)sender).Text = e.Data.GetData(DataFormats.Text).ToString();<br />
        }<br />
<br />
    }<br />
}  ]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# ile WMI Nasıl Kullanılır?]]></title>
			<link>https://www.zohreanaforum.com/konu-c-ile-wmi-nasil-kullanilir.html</link>
			<pubDate>Sun, 22 Feb 2009 16:44:58 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-ile-wmi-nasil-kullanilir.html</guid>
			<description><![CDATA[WMI (Windows Managment Interface), Windows 2000 ve sonrası işletim sistemlerinde bulunan, windows programcılarına işletim sisteminde bulunan hemen hemen her nesneyi denetleme ve yönetme olanağı sunan bir arabirimdir.   WMI kullanılarak Windows işletim sistemindeki dosya ayarlarından güvenlik ayarlarına kadar hemen her şey denetlenebilir ve WMI&#8217;ın sunduğu metodlarla değerleri değiştirilebilir. WMI hem yerel hem de uzak makinelerde kullanılabilir, programlaması ise oldukça kolaydır.<br />
<br />
WMI&#8217;ın, bulunduğu makine üzerinde farklı &#8220;Namespace&#8221; leri vardır. Varsayılan olarak bu &#8220;\\makine\root\default&#8220; tur. Fakat içinde bizim için gerekli olan &#8220;WMI Class&#8221; larını barındıran &#8220;\\makine\root\cimv2 &#8220; Namespace&#8217;ini kullanacağız. Bir &#8220;WMI Class&#8221;&#8217;ı Windows işletim sistemi üzerindeki bir nesnenin (Örneğin bir dosyanın) özelliklerini barındıran ve gerektiğinde sahip olduğu metodları kullanarak nesneye ait değerleri değiştirebilen bir sınıftır. Örnek olarak &#8220;Win32_Process&#8221; &#8220;cimv2&#8221; namespace&#8217;i içinde bir WMI sınıfıdır ve işletim sistemi üzerinde çalışan süreçleri görmek, istenildiğinde ise belirli bir süreci sonlandırmak veya yeni bir süreç başlatmak için kullanılabilir. Bir Windows işletim sistemi üzerindeki WMI sınıfları &#8220;wbemtest.exe&#8221; programı yardımıyla görülebilir.<br />
<br />
Windows XP de yaklaşık 900 WMI sınıfı vardır ve bu sınıfların yapabildikleri WMI verimliliği konusunda size bir fikir verebilir. Aşağıdaki resimlerde, &#8220;wbemtest.exe&#8221; programının işletim sistemi üzerindeki bütün WMI sınıflarını sıralanması ve istenilen sınıfın özelliklerini ve kullanabileceği metodları gösterilmesi anlatılmaktadır.<br />
<br />
<img src="http://www.programlama.com/Main/files/3288.gif" loading="lazy"  alt="[Resim: 3288.gif]" class="mycode_img" /><br />
<br />
<img src="http://www.programlama.com/Main/files/3288a.gif" loading="lazy"  alt="[Resim: 3288a.gif]" class="mycode_img" /><br />
<br />
<img src="http://www.programlama.com/Main/files/3288b.gif" loading="lazy"  alt="[Resim: 3288b.gif]" class="mycode_img" /><br />
<br />
Bu pencerede içeriğini görmek istediginiz sınıfın üzerine çift tıklayın.<br />
<br />
<img src="http://www.programlama.com/Main/files/3288c.gif" loading="lazy"  alt="[Resim: 3288c.gif]" class="mycode_img" /><br />
<br />
Kırmızı daireler içinde, makinedeki sabit diskler hakkında bilgi alan (Örneğin blok sayısı veya başlık bilgisi gibi) ve diskler üzerinde bazı işlemler yapabilen Win32_LogicalDisk sınıfı görülüyor(ikinci daire).<br />
<br />
<img src="http://www.programlama.com/Main/files/3288d.gif" loading="lazy"  alt="[Resim: 3288d.gif]" class="mycode_img" /><br />
<br />
Aşağıda yerel ya da uzak bir sistemde çalışan süreçleri gösteren, ve seçilen bir süreci sonlandırabilen basit bir uygulama örneği bulunmaktadır. Bu uygulamada Win32_Process sınıfını kullandım. Süreçleri listelemek için myListView adında bir listView kontrolü ve bu listView&#8217;in &#8220;Name&#8221;,&#8221;Parent Process ID&#8221;, &#8220;Process ID&#8221;, &#8220;Executable Path&#8221; olarak 4 tane sütunu olduğunu varsaydım.<br />
<br />
<br />
<br />
<img src="http://www.zohreanaforum.com/" loading="lazy"  alt="[Resim: www.zohreanaforum.com]" class="mycode_img" />[COLOR=#c5003f].Net altındaki ListView kontrolü konu dışı olduğundan burada ele alınmayacaktır.   <br />
<br />
<img src="http://www.zohreanaforum.com/" loading="lazy"  alt="[Resim: www.zohreanaforum.com]" class="mycode_img" />[COLOR=#c5003f]Bu kodu yazarken System.Managment NameSpace&#8217;i kullanılmıştır, bunun için System.Managment sınıfını koda referans olarak eklemelisiniz.(Kodun başına da using System.Managment;    deyimini koymayı unutmayın )   <br />
<br />
string[] lvItem = new string[4]; //süreçlerin Listview&#8217;in sütunlarına ait bilgilerin depolanacağı dizi<br />
string machineName = &#8220;MachineName&#8221;; //başlanılacak makine adı<br />
ManagementObjectSearcher mySearcher; //nesne sorgusunu çalıştırıp, dönen değerleri <br />
//toplayacak olan ManagmentObjectSearcher<br />
ManagementObjectCollection myObjectCollection; //mySearcher&#8217;dan dönen nesnelerin<br />
//depolanacağı ObjectCollection<br />
ObjectQuery oq; //sorgu stringini tutacak nesne sorgusu<br />
ConnectionOptions co = new ConnectionOptions();  //uzak makine bağlantısında<br />
//kullanılacak bağlantı seçeneklerini tutmak için<br />
co.Username = &#8220;username&#8221;;<br />
co.Password = &#8220;Password&#8221; ;<br />
//burada unutulmaması gereken şey yerel makineye yapılan bağlantılarda kullanıcı adı ve şifre<br />
//kullanamayacağınızdır. Yerel makine bağlantısı giriş yaptığnız aktif kullanıcı hesabı ve bu<br />
//hesabın hakları çerçevesinde gerçekleşir . Böyle bir durumda kullanıcı adı ve şifresini boş bırakın<br />
//managment scope üzerinde sorgu gerçekleştirecegimiz WMI namespace&#8217;ini tanımlamaktadır.<br />
ManagmentScope ms = new ManagmentScope(&#8220;\\\\&#8221; + machineName + &#8220;\\root\\cimv2&#8221;,co);<br />
oq = new ObjectQuery(&#8220;SELECT * FROM Win32_Process&#8221<img src="https://www.zohreanaforum.com/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_2" />; //sorgu string&#8217;i<br />
mySearcher = new ManagmentObjectSearcher(ms,oq); <br />
// ms scope&#8217;u içinde oq sorgusu kullanılarak, ilgili nesneler toplanacak<br />
myObjectCollection = mySearcher.Get(); <br />
//mySearcher da belirtilen sorgu çalı tırılıyor ve geri dönen nesneler myObjectCollection içinde toplanıyor.<br />
// aşağıda dönen her nesnenin (burada myObject&#8221; özellikleri alınıyor (&#8220;&#8220; içindeki ifadeler)<br />
//ve değerleri string veri tipine çevrilerek lvItem dizisine aktarılıyor. Sonra lvItem dizisindeki<br />
//değerler myItem adındaki ListView kontrolü nesnesine geçiriliyor. (Dikkat edilecek nokta ise<br />
//lvItem uzunluğunun myListView kontrolündeki sütun sayısına eşit olduğudur. Sütunlardaki<br />
//değerler ListView kontrolünde SubItem olarak adlandırılır.)<br />
<br />
foreach (ManagmentObject myObject in myObjectCollection)<br />
{<br />
  lvItem[0] = myObject[&#8220;Name&#8221;].ToString();<br />
  lvItem[1] = myObject[&#8220;ParentProcessId&#8221;].ToString();<br />
  lvItem[2] = myObject[&#8220;ProcessId&#8221;].ToString();<br />
try<br />
{<br />
  lvItem[4] = myObject[&#8220;ExecutablePath&#8221;].ToString();<br />
}<br />
catch<br />
{<br />
  lvItem[4] = &#8220;not available&#8221;;<br />
} ListViewItem myItem = new ListViewItem(lvItem);<br />
myListView.Items.Add(myItem);<br />
}<br />
<br />
//foreach dongüsü içindeki try/catch blo u bazı süreçlerin(SystemIdleProcess gibi)<br />
//ExecutablePath de erinin olmadı ı dü ünülerek konulmustur. Bu durumda kod hata üretmek<br />
//yerine kontrolün &#8220;Executable Path&#8221; sütununa deger olarak &#8220;not available&#8221; girecektir.<br />
//Artık süreçleri sıralayıp ListView da görebildigimize göre seçilen süreci öldüren kodu yazabiliriz:<br />
//myListView kontrolündeki mouse olaylarını izlemek için a a ıdaki olay i eyicisini tanımladık. Bu olay<br />
//tetiklendi i zaman yani kontrol üzerinde mouse hareketi oldugunda, &#8220;myListView_mouseDown&#8221;<br />
//metodu ça rılacaktır. Bu olay i leyicisi sınıfın InitializeComponent() metodunda tanımlanmalıdır.<br />
<br />
this.myListView.MouseDown += new<br />
System********s.Forms.MouseEventHandler(this.myListView_mouseDown); //burası tek satır<br />
<br />
//artık asıl kodumuza geçebiliriz.<br />
<br />
private void myListView_MouseDown(object sender, MouseEventArgs e)<br />
{<br />
  ContextMenu conMenu = new ContextMenu(); //sa mouse tu u tıklandı ında açılacak menü<br />
  MenuItem killProcess; //menu içinde yer alacak menuItem<br />
  // gerçekle en bir mouse hareketinin sa tu tıklaması olup olmadı ı denetleniyor<br />
  if (e.Button == MouseButtons.Right)<br />
  {<br />
    myListView.ContextMenu = conMenu;<br />
    killProcess = new MenuItem();<br />
    killProcess.Text = &#8220;Terminate Process&#8221;;<br />
    conMenu.MenuItems.Add(killProcess);<br />
    killProcess.Click += new EventHandler(killProcess_Click); // killProcess menu nesnesi<br />
   //tıklanıp tıklanmadı ını denetleyecek olay i leyicisi, tıklanırsa killProcess_Click<br />
   //metodunu ça ıracaktır.<br />
}<br />
}<br />
private void killProcess_Click(object sender, EventArgs e)<br />
{<br />
string processID = myListView.SelectedItems[0].SubItems[2].Text;<br />
string processName = myListView.SelectedItems[0].SubItems[0].Text;<br />
string queryString = "SELECT * FROM Win32_Process WHERE ProcessID<br />
='" + processID +"'"; //burası tek satır<br />
ObjectQuery objq = new ObjectQuery(queryString);<br />
ManagementScope ms = new ManagementScope("\\\\"+ MachineName +<br />
"\\root\\cimv2"); //burası tek satır<br />
ManagementObjectSearcher objSearch = new<br />
ManagementObjectSearcher(ms,objq); //burası tek satır<br />
ManagementObjectCollection objqColl ;<br />
objqColl = objSearch.Get();<br />
ListViewItem lvItem;<br />
try<br />
{<br />
foreach (ManagementObject mo in objqColl)<br />
{<br />
mo.InvokeMethod("Terminate",null);<br />
}<br />
lvItem = processList.SelectedItems[0];<br />
lvItem.Remove();<br />
MessageBox.Show(processName +" has been successfully terminated");<br />
}<br />
catch(Exception ex)<br />
{<br />
MessageBox.Show("Error Terminating "+ //burası tek satır<br />
processList.SelectedItems[0].SubItems[0].Text+" because: "+ex.ToString());<br />
}<br />
}  <br />
Umarım bu döküman okuyanlara faydalı olur.<br />
İyi çalışmalar...<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Mert Süoğlu</span>  ]]></description>
			<content:encoded><![CDATA[WMI (Windows Managment Interface), Windows 2000 ve sonrası işletim sistemlerinde bulunan, windows programcılarına işletim sisteminde bulunan hemen hemen her nesneyi denetleme ve yönetme olanağı sunan bir arabirimdir.   WMI kullanılarak Windows işletim sistemindeki dosya ayarlarından güvenlik ayarlarına kadar hemen her şey denetlenebilir ve WMI&#8217;ın sunduğu metodlarla değerleri değiştirilebilir. WMI hem yerel hem de uzak makinelerde kullanılabilir, programlaması ise oldukça kolaydır.<br />
<br />
WMI&#8217;ın, bulunduğu makine üzerinde farklı &#8220;Namespace&#8221; leri vardır. Varsayılan olarak bu &#8220;\\makine\root\default&#8220; tur. Fakat içinde bizim için gerekli olan &#8220;WMI Class&#8221; larını barındıran &#8220;\\makine\root\cimv2 &#8220; Namespace&#8217;ini kullanacağız. Bir &#8220;WMI Class&#8221;&#8217;ı Windows işletim sistemi üzerindeki bir nesnenin (Örneğin bir dosyanın) özelliklerini barındıran ve gerektiğinde sahip olduğu metodları kullanarak nesneye ait değerleri değiştirebilen bir sınıftır. Örnek olarak &#8220;Win32_Process&#8221; &#8220;cimv2&#8221; namespace&#8217;i içinde bir WMI sınıfıdır ve işletim sistemi üzerinde çalışan süreçleri görmek, istenildiğinde ise belirli bir süreci sonlandırmak veya yeni bir süreç başlatmak için kullanılabilir. Bir Windows işletim sistemi üzerindeki WMI sınıfları &#8220;wbemtest.exe&#8221; programı yardımıyla görülebilir.<br />
<br />
Windows XP de yaklaşık 900 WMI sınıfı vardır ve bu sınıfların yapabildikleri WMI verimliliği konusunda size bir fikir verebilir. Aşağıdaki resimlerde, &#8220;wbemtest.exe&#8221; programının işletim sistemi üzerindeki bütün WMI sınıflarını sıralanması ve istenilen sınıfın özelliklerini ve kullanabileceği metodları gösterilmesi anlatılmaktadır.<br />
<br />
<img src="http://www.programlama.com/Main/files/3288.gif" loading="lazy"  alt="[Resim: 3288.gif]" class="mycode_img" /><br />
<br />
<img src="http://www.programlama.com/Main/files/3288a.gif" loading="lazy"  alt="[Resim: 3288a.gif]" class="mycode_img" /><br />
<br />
<img src="http://www.programlama.com/Main/files/3288b.gif" loading="lazy"  alt="[Resim: 3288b.gif]" class="mycode_img" /><br />
<br />
Bu pencerede içeriğini görmek istediginiz sınıfın üzerine çift tıklayın.<br />
<br />
<img src="http://www.programlama.com/Main/files/3288c.gif" loading="lazy"  alt="[Resim: 3288c.gif]" class="mycode_img" /><br />
<br />
Kırmızı daireler içinde, makinedeki sabit diskler hakkında bilgi alan (Örneğin blok sayısı veya başlık bilgisi gibi) ve diskler üzerinde bazı işlemler yapabilen Win32_LogicalDisk sınıfı görülüyor(ikinci daire).<br />
<br />
<img src="http://www.programlama.com/Main/files/3288d.gif" loading="lazy"  alt="[Resim: 3288d.gif]" class="mycode_img" /><br />
<br />
Aşağıda yerel ya da uzak bir sistemde çalışan süreçleri gösteren, ve seçilen bir süreci sonlandırabilen basit bir uygulama örneği bulunmaktadır. Bu uygulamada Win32_Process sınıfını kullandım. Süreçleri listelemek için myListView adında bir listView kontrolü ve bu listView&#8217;in &#8220;Name&#8221;,&#8221;Parent Process ID&#8221;, &#8220;Process ID&#8221;, &#8220;Executable Path&#8221; olarak 4 tane sütunu olduğunu varsaydım.<br />
<br />
<br />
<br />
<img src="http://www.zohreanaforum.com/" loading="lazy"  alt="[Resim: www.zohreanaforum.com]" class="mycode_img" />[COLOR=#c5003f].Net altındaki ListView kontrolü konu dışı olduğundan burada ele alınmayacaktır.   <br />
<br />
<img src="http://www.zohreanaforum.com/" loading="lazy"  alt="[Resim: www.zohreanaforum.com]" class="mycode_img" />[COLOR=#c5003f]Bu kodu yazarken System.Managment NameSpace&#8217;i kullanılmıştır, bunun için System.Managment sınıfını koda referans olarak eklemelisiniz.(Kodun başına da using System.Managment;    deyimini koymayı unutmayın )   <br />
<br />
string[] lvItem = new string[4]; //süreçlerin Listview&#8217;in sütunlarına ait bilgilerin depolanacağı dizi<br />
string machineName = &#8220;MachineName&#8221;; //başlanılacak makine adı<br />
ManagementObjectSearcher mySearcher; //nesne sorgusunu çalıştırıp, dönen değerleri <br />
//toplayacak olan ManagmentObjectSearcher<br />
ManagementObjectCollection myObjectCollection; //mySearcher&#8217;dan dönen nesnelerin<br />
//depolanacağı ObjectCollection<br />
ObjectQuery oq; //sorgu stringini tutacak nesne sorgusu<br />
ConnectionOptions co = new ConnectionOptions();  //uzak makine bağlantısında<br />
//kullanılacak bağlantı seçeneklerini tutmak için<br />
co.Username = &#8220;username&#8221;;<br />
co.Password = &#8220;Password&#8221; ;<br />
//burada unutulmaması gereken şey yerel makineye yapılan bağlantılarda kullanıcı adı ve şifre<br />
//kullanamayacağınızdır. Yerel makine bağlantısı giriş yaptığnız aktif kullanıcı hesabı ve bu<br />
//hesabın hakları çerçevesinde gerçekleşir . Böyle bir durumda kullanıcı adı ve şifresini boş bırakın<br />
//managment scope üzerinde sorgu gerçekleştirecegimiz WMI namespace&#8217;ini tanımlamaktadır.<br />
ManagmentScope ms = new ManagmentScope(&#8220;\\\\&#8221; + machineName + &#8220;\\root\\cimv2&#8221;,co);<br />
oq = new ObjectQuery(&#8220;SELECT * FROM Win32_Process&#8221<img src="https://www.zohreanaforum.com/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_2" />; //sorgu string&#8217;i<br />
mySearcher = new ManagmentObjectSearcher(ms,oq); <br />
// ms scope&#8217;u içinde oq sorgusu kullanılarak, ilgili nesneler toplanacak<br />
myObjectCollection = mySearcher.Get(); <br />
//mySearcher da belirtilen sorgu çalı tırılıyor ve geri dönen nesneler myObjectCollection içinde toplanıyor.<br />
// aşağıda dönen her nesnenin (burada myObject&#8221; özellikleri alınıyor (&#8220;&#8220; içindeki ifadeler)<br />
//ve değerleri string veri tipine çevrilerek lvItem dizisine aktarılıyor. Sonra lvItem dizisindeki<br />
//değerler myItem adındaki ListView kontrolü nesnesine geçiriliyor. (Dikkat edilecek nokta ise<br />
//lvItem uzunluğunun myListView kontrolündeki sütun sayısına eşit olduğudur. Sütunlardaki<br />
//değerler ListView kontrolünde SubItem olarak adlandırılır.)<br />
<br />
foreach (ManagmentObject myObject in myObjectCollection)<br />
{<br />
  lvItem[0] = myObject[&#8220;Name&#8221;].ToString();<br />
  lvItem[1] = myObject[&#8220;ParentProcessId&#8221;].ToString();<br />
  lvItem[2] = myObject[&#8220;ProcessId&#8221;].ToString();<br />
try<br />
{<br />
  lvItem[4] = myObject[&#8220;ExecutablePath&#8221;].ToString();<br />
}<br />
catch<br />
{<br />
  lvItem[4] = &#8220;not available&#8221;;<br />
} ListViewItem myItem = new ListViewItem(lvItem);<br />
myListView.Items.Add(myItem);<br />
}<br />
<br />
//foreach dongüsü içindeki try/catch blo u bazı süreçlerin(SystemIdleProcess gibi)<br />
//ExecutablePath de erinin olmadı ı dü ünülerek konulmustur. Bu durumda kod hata üretmek<br />
//yerine kontrolün &#8220;Executable Path&#8221; sütununa deger olarak &#8220;not available&#8221; girecektir.<br />
//Artık süreçleri sıralayıp ListView da görebildigimize göre seçilen süreci öldüren kodu yazabiliriz:<br />
//myListView kontrolündeki mouse olaylarını izlemek için a a ıdaki olay i eyicisini tanımladık. Bu olay<br />
//tetiklendi i zaman yani kontrol üzerinde mouse hareketi oldugunda, &#8220;myListView_mouseDown&#8221;<br />
//metodu ça rılacaktır. Bu olay i leyicisi sınıfın InitializeComponent() metodunda tanımlanmalıdır.<br />
<br />
this.myListView.MouseDown += new<br />
System********s.Forms.MouseEventHandler(this.myListView_mouseDown); //burası tek satır<br />
<br />
//artık asıl kodumuza geçebiliriz.<br />
<br />
private void myListView_MouseDown(object sender, MouseEventArgs e)<br />
{<br />
  ContextMenu conMenu = new ContextMenu(); //sa mouse tu u tıklandı ında açılacak menü<br />
  MenuItem killProcess; //menu içinde yer alacak menuItem<br />
  // gerçekle en bir mouse hareketinin sa tu tıklaması olup olmadı ı denetleniyor<br />
  if (e.Button == MouseButtons.Right)<br />
  {<br />
    myListView.ContextMenu = conMenu;<br />
    killProcess = new MenuItem();<br />
    killProcess.Text = &#8220;Terminate Process&#8221;;<br />
    conMenu.MenuItems.Add(killProcess);<br />
    killProcess.Click += new EventHandler(killProcess_Click); // killProcess menu nesnesi<br />
   //tıklanıp tıklanmadı ını denetleyecek olay i leyicisi, tıklanırsa killProcess_Click<br />
   //metodunu ça ıracaktır.<br />
}<br />
}<br />
private void killProcess_Click(object sender, EventArgs e)<br />
{<br />
string processID = myListView.SelectedItems[0].SubItems[2].Text;<br />
string processName = myListView.SelectedItems[0].SubItems[0].Text;<br />
string queryString = "SELECT * FROM Win32_Process WHERE ProcessID<br />
='" + processID +"'"; //burası tek satır<br />
ObjectQuery objq = new ObjectQuery(queryString);<br />
ManagementScope ms = new ManagementScope("\\\\"+ MachineName +<br />
"\\root\\cimv2"); //burası tek satır<br />
ManagementObjectSearcher objSearch = new<br />
ManagementObjectSearcher(ms,objq); //burası tek satır<br />
ManagementObjectCollection objqColl ;<br />
objqColl = objSearch.Get();<br />
ListViewItem lvItem;<br />
try<br />
{<br />
foreach (ManagementObject mo in objqColl)<br />
{<br />
mo.InvokeMethod("Terminate",null);<br />
}<br />
lvItem = processList.SelectedItems[0];<br />
lvItem.Remove();<br />
MessageBox.Show(processName +" has been successfully terminated");<br />
}<br />
catch(Exception ex)<br />
{<br />
MessageBox.Show("Error Terminating "+ //burası tek satır<br />
processList.SelectedItems[0].SubItems[0].Text+" because: "+ex.ToString());<br />
}<br />
}  <br />
Umarım bu döküman okuyanlara faydalı olur.<br />
İyi çalışmalar...<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Mert Süoğlu</span>  ]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[C# ve Crystal Reports 10]]></title>
			<link>https://www.zohreanaforum.com/konu-c-ve-crystal-reports-10.html</link>
			<pubDate>Sun, 22 Feb 2009 16:43:31 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-c-ve-crystal-reports-10.html</guid>
			<description><![CDATA[İstediğiniz Raporu en kısa yoldan almak için  1)Crystal Reports 10 rapor editörü ile raporumuzu hazırlıyoruz.HAzırladığımız raporu Rpt uzantılı olarak kaydediyoruz.<br />
<br />
2)Bu dosyayı Solution Explorer penceresinden projemize ekliyoruz.(Add Existing item yada sürükle bırak).. ve ardından formumuza birde Crystalviewer ekliyoruz.<br />
<br />
3) raporu hazırlarken kullandığımız tabloyu içeren bir adapter ile dataset'i  fill ediyoruz.Burada istediğimiz sorguya göre fill edebiliriz.buda bize istediğimiz raporu alma olanağı verir.<br />
<br />
(örn:oleDbDataAdapter1.Fill(dsRapor1)<img src="https://www.zohreanaforum.com/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_2" /><br />
<br />
<br />
4) Son olarakta Crystal Reports değişkenlerimizi tanımlayıp,bağlantıları tanımladıktan sonra raporumuzu alabiliriz...<br />
<br />
(örn:Bu işlemleri Buton_Click olayında yaparsanız butona bastığınızda rapor görüntülenir...Rapor1 benim projeme eklediğim rpt dosyası...<br />
<br />
<br />
Rapor1 R = new Rapor1();<br />
<br />
R.SetDataSource(dsRapor1);<br />
<br />
crystalReportViewer1.ReportSource=R;<br />
<br />
)<br />
<br />
<br />
<br />
<br />
Mustafa KOÇER]]></description>
			<content:encoded><![CDATA[İstediğiniz Raporu en kısa yoldan almak için  1)Crystal Reports 10 rapor editörü ile raporumuzu hazırlıyoruz.HAzırladığımız raporu Rpt uzantılı olarak kaydediyoruz.<br />
<br />
2)Bu dosyayı Solution Explorer penceresinden projemize ekliyoruz.(Add Existing item yada sürükle bırak).. ve ardından formumuza birde Crystalviewer ekliyoruz.<br />
<br />
3) raporu hazırlarken kullandığımız tabloyu içeren bir adapter ile dataset'i  fill ediyoruz.Burada istediğimiz sorguya göre fill edebiliriz.buda bize istediğimiz raporu alma olanağı verir.<br />
<br />
(örn:oleDbDataAdapter1.Fill(dsRapor1)<img src="https://www.zohreanaforum.com/images/smilies/wink.png" alt="Wink" title="Wink" class="smilie smilie_2" /><br />
<br />
<br />
4) Son olarakta Crystal Reports değişkenlerimizi tanımlayıp,bağlantıları tanımladıktan sonra raporumuzu alabiliriz...<br />
<br />
(örn:Bu işlemleri Buton_Click olayında yaparsanız butona bastığınızda rapor görüntülenir...Rapor1 benim projeme eklediğim rpt dosyası...<br />
<br />
<br />
Rapor1 R = new Rapor1();<br />
<br />
R.SetDataSource(dsRapor1);<br />
<br />
crystalReportViewer1.ReportSource=R;<br />
<br />
)<br />
<br />
<br />
<br />
<br />
Mustafa KOÇER]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cd Sürücüsünü Açma]]></title>
			<link>https://www.zohreanaforum.com/konu-cd-surucusunu-acma.html</link>
			<pubDate>Fri, 28 Nov 2008 18:46:09 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-cd-surucusunu-acma.html</guid>
			<description><![CDATA[Sürücüyü acma işlemini c# ile yapacaz fakat eklenecek usingler WMI lar hemen verelim<br />
<br />
using System.Management;<br />
using System.Runtime.InteropServices; //interopServices'i ekledik<br />
<br />
şimdi sıra DLL import edelim<br />
<br />
<br />
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)] <br />
// dll import ettik <br />
<br />
Static fonksiyon sizde aynen böyle yazın<br />
<br />
<br />
public static extern int cdKapakAc(string icerik, StringBuilder durum, int deger, IntPtr neKadar); //CD acma <br />
<br />
Şimdi acacak button click yordamına yazalım<br />
<br />
<br />
private void button2_Click(object sender, EventArgs e) <br />
{ <br />
cdKapakAc("Set cdaudio door open wait ", null, 0, IntPtr.Zero); <br />
}<br />
<br />
<br />
Aynı işlemleri CD kapatma için yazalım hızlıca yazıyorum<br />
<br />
<br />
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)] <br />
// dll import ettik <br />
public static extern int cdKapakKapat(string icerik, StringBuilder durum, int deger, IntPtr neKadar); //CD kapat <br />
<br />
private void button3_Click(object sender, EventArgs e) //Kapağı aç <br />
{<br />
cdKapakKapat("Set cdaudio door Closed wait ", null, 0, IntPtr.Zero);<br />
}]]></description>
			<content:encoded><![CDATA[Sürücüyü acma işlemini c# ile yapacaz fakat eklenecek usingler WMI lar hemen verelim<br />
<br />
using System.Management;<br />
using System.Runtime.InteropServices; //interopServices'i ekledik<br />
<br />
şimdi sıra DLL import edelim<br />
<br />
<br />
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)] <br />
// dll import ettik <br />
<br />
Static fonksiyon sizde aynen böyle yazın<br />
<br />
<br />
public static extern int cdKapakAc(string icerik, StringBuilder durum, int deger, IntPtr neKadar); //CD acma <br />
<br />
Şimdi acacak button click yordamına yazalım<br />
<br />
<br />
private void button2_Click(object sender, EventArgs e) <br />
{ <br />
cdKapakAc("Set cdaudio door open wait ", null, 0, IntPtr.Zero); <br />
}<br />
<br />
<br />
Aynı işlemleri CD kapatma için yazalım hızlıca yazıyorum<br />
<br />
<br />
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)] <br />
// dll import ettik <br />
public static extern int cdKapakKapat(string icerik, StringBuilder durum, int deger, IntPtr neKadar); //CD kapat <br />
<br />
private void button3_Click(object sender, EventArgs e) //Kapağı aç <br />
{<br />
cdKapakKapat("Set cdaudio door Closed wait ", null, 0, IntPtr.Zero);<br />
}]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cd Seri Numarası Bulma]]></title>
			<link>https://www.zohreanaforum.com/konu-cd-seri-numarasi-bulma.html</link>
			<pubDate>Fri, 28 Nov 2008 18:45:30 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://www.zohreanaforum.com/member.php?action=profile&uid=268">PELİN</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.zohreanaforum.com/konu-cd-seri-numarasi-bulma.html</guid>
			<description><![CDATA[Cd seri numarası ile sifreleme yapılabilir...  C# ile CD numarasını bulmak için yapaçağımız aşağıdaki kodu form button click içerisine yazmaktır.<br />
<br />
SelectQuery query = new SelectQuery( "select * from win32_logicaldisk where drivetype=5" ); <br />
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); <br />
foreach( ManagementObject mo in searcher.Get() ) <br />
{ //( mo["volumename"] != null ) <br />
if(( mo["volumeserialnumber"] != null ) ) <br />
{ <br />
MessageBox.Show( "CD ismi:"+ mo["volumename"] ); // cd isminin alındıgı yer MessageBox.Show( "CD Seri Numarası:"+ mo["volumeserialnumber"] ); //cd seri numarası serial = mo["volumeserialnumber"].ToString(); <br />
// MessageBox.Show(asa[3].ToString()); <br />
} <br />
else <br />
{ MessageBox.Show( "Lütfen Cd Takınız" ); <br />
} <br />
}<br />
<br />
<br />
unutmatyın WMI da çalıştığımız için using system management import edilmeli yani add referances yaparak bunu kodun başına koymalısınız...]]></description>
			<content:encoded><![CDATA[Cd seri numarası ile sifreleme yapılabilir...  C# ile CD numarasını bulmak için yapaçağımız aşağıdaki kodu form button click içerisine yazmaktır.<br />
<br />
SelectQuery query = new SelectQuery( "select * from win32_logicaldisk where drivetype=5" ); <br />
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); <br />
foreach( ManagementObject mo in searcher.Get() ) <br />
{ //( mo["volumename"] != null ) <br />
if(( mo["volumeserialnumber"] != null ) ) <br />
{ <br />
MessageBox.Show( "CD ismi:"+ mo["volumename"] ); // cd isminin alındıgı yer MessageBox.Show( "CD Seri Numarası:"+ mo["volumeserialnumber"] ); //cd seri numarası serial = mo["volumeserialnumber"].ToString(); <br />
// MessageBox.Show(asa[3].ToString()); <br />
} <br />
else <br />
{ MessageBox.Show( "Lütfen Cd Takınız" ); <br />
} <br />
}<br />
<br />
<br />
unutmatyın WMI da çalıştığımız için using system management import edilmeli yani add referances yaparak bunu kodun başına koymalısınız...]]></content:encoded>
		</item>
	</channel>
</rss>