DexExpres`de Chart Kontrolu
|
Erkan Sezer
|
DexExpress`in componentlarının kullanarak kucuk bir grafik ornegi yapacagim.
Öncelike projemize referasn olarak DevExpress.Charts.v8.2.Core , DevExpress.Data.v8.2 ,DevExpress.Utils.v8.2, DevExpress.XtraCharts.v8.2 ve DevExpress.XtraCharts.v8.2.UI componentlarini ekleyecegiz.
Daha sonra aşağıdaki kod bloğunu projene eklersek ;
ChartControl barChart = newChartControl(); Series series1 = newSeries("", ViewType.Bar); series1.Points.Add(newSeriesPoint("0", 20)); series1.Points.Add(newSeriesPoint("5", 12)); series1.Points.Add(newSeriesPoint("10", 32)); series1.Points.Add(newSeriesPoint("15", 24)); series1.Points.Add(newSeriesPoint("20", 18)); barChart.Series.Add(series1); barChart.Size = new System.Drawing.Size(400, 300); panel1.Controls.Add(barChart); barChart.Location = newPoint(50, 50);
cok guzel bir grafik cizimi yapmis oluruz.
Oncelikle Chart kontrolu olustururuz ve daha sonrada buna ekleyecegimiz grafikteki serileri olusturmaliyiz ve olusturulan bu seriyi chart kontrolumuze ekleriz, daha sonra ekrandaki olusturacagimiz panelde bu grafigi gosterecegiz , tabiki bu grafigin kodlarda da goruldugu gibi size ve location degerlerini set ediyoruz.
|
|
23 Nisan 2010 Cuma
|
|
|
|
|
Split Metodu
|
Erkan Sezer
|
C# ile string ifadeleri birbirinden ayırmaya yarayan çok kullanışlı bir
metoddan bahsedeceğim. Aslında Java`da kullanılan Strıng Tokenizer`ı
biraz andırması sebebi daha önce Java ile yapmış olduğum bir örneğin
text olarak aynısını ekrana yazıp örneği anlatacağım, daha önceki Java
örneğini görmek için tıklayınız.
"Erkan Sezer Filenet P8 Platformunda Calisiyor" gibir bir textimiz
olsun ve boşluk karakterlerini referans alarak bu değerleri string
parse işlemleri yapmadan ekrana tek tek yazdıracağım fakat burda küçük
bir ayrıntıya dikkat etmemiz gerekiyor. Referans olarak boşluk
karakterini aldik.
Kod bloğumuz aşağıdaki gibidir, her zamanki gibi değerleri ayrı ayrı MessageBox ile ekrana yazıyorum.
string text = "Erkan Sezer Filenet P8 Platformunda Calisiyor";
for (int i = 0; i < text.Split(` `).Length; i++)
{
MessageBox.Show(text.Split(` `)[i]);
}
Sizinde görmüş olduğunuz gibi text değişkenini split metodu ile ve
metodda da boşluk karakterini referasn olarak ekrana ayrı ayrı
yazdırmaktayım.
|
|
14 Şubat 2010 Pazar
|
|
|
|
|
Custom Datatable Kullanimi
|
Erkan Sezer
|
.Net de DataGridView componenti ile databaseden gelen verileri datatable`a veya dataset`e aktararak, olusturulan dataset veya datable`i da DatagridView`in datasource propertiy`sine atayarak gosteririz. Peki elimizdeki veriler database`den gelmiyorsa yani bu verileri biz kendimiz hardcoded olusturmusssak bunu gridde nasil gosterecegiz? Bununla ilgili kucuk bir ornek yapacagim.
Oncelikler veriler bir banka musterisine ait olsun ve Musterinin nosu adi ve adresi bu verileri olustursun. Biz datatable nesnesine bu verileri atayacagiz ve daha sonrada gridde gosterecegiz. Adim adim atlatmak gerekirse;
DataTable Dt = new DataTable();
DataRow Dr;
DataColumn MusteriNo = new DataColumn("No", System.Type.GetType("System.String"));
DataColumn MusteriAdi = new DataColumn("Isim", System.Type.GetType("System.String"));
DataColumn MusteriAdres = new DataColumn("Adres", System.Type.GetType("System.String"));
Dt.Columns.Add(MusteriNo);
Dt.Columns.Add(MusteriAdi);
Dt.Columns.Add(MusteriAdres);
Datatable ve datarow olusturduk ve daha sonra table da kullanacagimiz column`lar olusturuldu. Ornektende gorebilecegiz gibi kolon isimleri :No, Isim ve Adres.
Dr = Dt.NewRow();
Dr[0] = "100";
Dr[1] = "Erkan Sezer";
Dr[2] = "Sahrayicedit";
Dt.Rows.Add(Dr);
Dr = Dt.NewRow();
Dr[0] = "101";
Dr[1] = "Yavuz Selim Keresteci";
Dr[2] = "Goztepe";
Dt.Rows.Add(Dr);
Yukarda ise ; datatable` da row`lar olusturduk ve olusturulan rowlara degerler atadik, atadigimiz bu rowlari da databale`a ekledik. Bundan sonrasi zaten en basit olan kismi. Yapmamiz gereken sadece olusturdugumuz bu datatable nesnesini gostermek istedigimiz datalari icin kullanacagimiz grid nesnesinin datasource property`sine atamak. Programimizi calistirdigimizda gorecegimiz gibi sutun basliklari No, Isim ve Adres olan gridde bizim manuel olarak yani hardcoded olarak set ettigimiz datalari gorunecektir.
dataGridView1.DataSource = Dt;
|
|
20 Temmuz 2009 Pazartesi
|
|
|
|
|
Ping Atma
|
Erkan Sezer
|
Son zamanlarda sitelerde C# ile ping atilan kod parcalari goruyorum ama bircogu da bunun calismiyor , bundan dolayi burda Ping atma isle ilgili kucuk bir kod parcasi yazacagim. Asagidaki kod bize TextBox (www.erkansezer.com gibi) icine yazdigimi adrese ping atarak geri adres degerini gostermektedir.
Oncelikle Ping atmak icin System.Net.NetworkInformation namespace ine ihtiyac duyariz. Koda da bakacak olursa bize geri donen responsun IPStatus degerine bakarak gonderdigimiz paketin buyuklugu , donanim hatasi veya asagidaki gibi basarili olmus bis islemin sonucunda bizde kullaniciya ping atilan yerin IP adresini gostermekteyiz.
try
{
Ping ping = new Ping();
PingReply response = ping.Send(textBox1.Text);
if (response.Status == IPStatus.Success)
{
MessageBox.Show(response.Address.ToString());
}
}
catch (Exception Exc)
{
MessageBox.Show(Exc.Message.ToString());
}
|
|
19 Temmuz 2009 Cumartesi
|
|
|
|
|
Delegate Event Kullanimi
|
Erkan Sezer
|
C# da delegate ve event olusturmakla ilgili bir ornek anlatacagim. Oncelikle delegate olusturacagiz ve bunda tureyen de eventimizi olusturacak ve ekrana bir mesaj basacagiz. Burda , verdigim ornekler kucuk kucuk kod bloglari ve ipuclari oldugundan dolayi event ve delegate nerde ve nasil kullanilir gibisinden bir aciklama yapmayacagim. Asagida ornek kod blogunu ve aciklamasini bulabilirsiniz.
Aynen method tanimlar gibi bir delegate tanimliyoruz , burdaki farkin delegate kelimesi oldugunu goruyorsunuz.
public delegate void dlgMesajYaz();
Daha sonra bir class olusturuyor ve bu class da da dlgMesajYaz delegate inden Event handler ile Evetn olusturuyoruz. Daha sonra da yazdigimiz procedure ismini event ile cagiriyor ve bir button yardimi ile de ekrana MessageBox da istedigimiz mesaji yazdiriyoruz. Yazdigimiz class asagidadir.
class EventTest
{
public event dlgMesajYaz evntMesajYaz;
public EventTest()
{
evntMesajYaz += new dlgMesajYaz(MesajYazdir);
}
public void MesajYazdir()
{
MessageBox.Show("Event Delegate Anlatimi");
}
}
En son olarak da button yardimi ile ekrana mesaji basiyoruz.
EventTest msg = new EventTest();
msg.MesajYazdir();
|
|
27 Nisan 2009 Pazartesi
|
|
|
|
|
Fonksiyonlarin Asiri Yuklenmesi
|
Erkan Sezer
|
Fonksiyonlarin asiri yuklenmesi ile ilgili bir ornek yapacagim. Yani ayni isimde olan fonksiyonlarin farkli parametreler kullanilarak bu fonksiyonlarla islemler yaptiracagiz. Ben burda bir toplama islemi yaptirdim. Fonksiyon isimleri ayni ama aldiklari parametreler ve bana dondugu degerlerin turu farkli.
Oncelikle basit class yazdim ve daha sonrada bunlarin instance i almak icin bir butonun altina kodlarimi ekledim, tabiki isterseniz ekrana da bunlari yazdirabilirsiniz. Ornegimiz asagidadir:
class AsiriYukleme
{
public int Toplama(int x, int y)
{
return x + y;
}
public double Toplama(double x, double y)
{
return x + y;
}
public float Toplama(float x, float y)
{
return x + y;
}
}
Bunlari cagirdigim butonun altina ekledigim kodda asagidaki gibidir:
AsiriYukleme ay = new AsiriYukleme();
int intDeger = ay.Toplama(10, 10);
float floatDeger = ay.Toplama(12f, 12f);
double doubleDeger = ay.Toplama(15.0, 15.0);
|
|
27 Nisan 2009 Pazartesi
|
|
|
|
|
Params Keywordu ile Metoda Parametre Gecirme
|
Erkan Sezer
|
Metodlara parametreler set ederiz ve metodlarin icinde bu parametre degelerine gore islemler yapariz. Bu deger 1 ve birden cok daha fazla olabilir. Peki bu parametre degerlerini params degeri ile nasil gondeririz? Bununla ilgili basit bir ornek yapacagiz.
Bu islemin en fazla kullanildigi yerlerden biri sp lere deger set ederken kullanilmaktadir. Biz burda basit bir toplama islemi yaptiracagiz , daha sonra da bunu ekrana messagebox ile yazdiracagiz.
Toplama icin kullanilacak procedure :
private int ToplamProcedure(params int[] GelenDizi)
{
int ToplamDegeri = 0;
for (int i = 0; i < GelenDizi.Length; i++)
{
ToplamDegeri += GelenDizi[i];
}
return ToplamDegeri;
}
Bu procedure yi cagiracak ve ekran mesaj olarak yazdiracagimiz kisimda asagidaki gibidir : Sonuc olarak bize 162 donecektir.
int [] Dizi = {7,2,6,145,2};
int ToplamSonuc = ToplamProcedure(Dizi);
MessageBox.Show(ToplamSonuc.ToString());
|
|
13 Nisan 2009 Pazartesi
|
|
|
|
|
String Formatlama
|
Erkan Sezer
|
Ekranlara tarih degerlerinde ve string tipinde ifadeleri belirli formatlara gore yazdirmak isteriz. Bununla ilgili bir ornek yapacagim. Ilk ornekte o gune ait tum gunu formatli bicimde verecegim ve bunu ekrana mesaj olarak yazdiracagim.
DateTime tarih;
tarih = DateTime.Now;
MessageBox.Show(String.Format("{0:D}", tarih).ToString());
String format kismini su sekilde degistirirsem String.Format("{0:dddd}",tarih) kismini su sekilde degistirirsem hangi gunde oldugumuzu ekrana yazdiracaktir.
Bunu biraz daha degistirirse : String.Format("{0:MMMM}", tarih) gibi , bu degerde hangi ayda oldugmuzu ekrana yazdiracaktir.
String formatlama islemini sadece tarih degerlerinde degil; sayilarda ve para birimlerinde de kullanilmaktadir. Bu islem bize buyuk kolayliklar saglamaktadir.
|
|
13 Nisan 2009 Pazartesi
|
|
|
|
|
Environment Variables
|
Erkan Sezer
|
Sistemlerimizde tüm uygulamalar tarafindan erişilen değerler vardır (Environment Variables) Bu değerlere erişmek isteyebiliriz ve burda çeşitli durumlarda kullanırız. Örneğin TEMP dosyamızda geciçi resimleri turmak veya kendi oluşturduğumuz bir folderda txt dosyarı tutmak gibi. Tabiki bunların uzun uzun pathlerini yazmayacağım.
Sizinde çok rahat şekilde göreceğiniz gibi MessageBox ile bunları ekrana yazdırdım. Bunların dışında da çok daha fazla değer tutabiliriz.
Makina ismi , işletim sistemi ile ilgili özellikler, system directory si , ve TEMP dosyasına ulaşmak için aşağıdaki kodlar işimizi görecektir.
MessageBox.Show(Environment.MachineName.ToString());
MessageBox.Show(Environment.OSVersion.Platform.ToString());
MessageBox.Show(Environment.OSVersion.ServicePack.ToString());
MessageBox.Show(Environment.OSVersion.Version.Major.ToString());
MessageBox.Show(Environment.OSVersion.VersionString.ToString());
MessageBox.Show(Environment.ProcessorCount.ToString());
MessageBox.Show(Environment.SystemDirectory.ToString());
MessageBox.Show(Environment.UserDomainName.ToString());
MessageBox.Show(Environment.UserName.ToString());
MessageBox.Show(Environment.GetEnvironmentVariable("TEMP").ToString());
|
|
11 Nisan 2009 Cumartesi
|
|
|
|
|
List ve Dictionary Collections
|
Erkan Sezer
|
ArrayList ve Hashtable collectionsları yerine kullanabileceğimiz List<> ve Dictionary<> Generic Colection`larından kısaca bahsedeceğim.
Öncelike List<> ve Dictionary<> collection`ları bize daha güvenli kod yazmamızı ve yazdığımız kodlarımızın daha performanslı çalışmasını sağlar. Boxing ve unboxing işlemleri yapmadığımız için performansta büyük getiriler sağlamaktadır.İsimlerinden de anlaşılabileceği gibi List<> Arraylist ve Dictionary<> de Hashtable collectionsları yerine kullanılmaktadır. Bu Framework 2.0 ile gelmiştir ve kullanılışı büyük avantajlar getirmektedir. Dictionary<> collection`su key value şeklinde çalışmaktadır.
Aşağıdaki kodlarda öncelikle Dictionary<> oluşturma ile ilgili örnek verilmiş ve oluşturulan generic collaction`un değeri okunmuştur. İkinci kod bloğunda da List<> `e örnek verilerek yine oluşturulan değer foreach yapısı ile okunmuştur.
Dictionary <int, string> Ekip = new Dictionary<int, string>();
Ekip.Add(1, "Muhammet Ali Hançer");
Ekip.Add(2, "Yavuz Selim Keresteci");
Ekip.Add(3, "Erkan Sezer");
Ekip.Add(4, "Mehmet Salih Avınç");
foreach (string item in Ekip.Values)
{
MessageBox.Show(item);
}
List <string> Ekip = new List<string>();
Ekip.Add( "Muhammet Ali Hançer");
Ekip.Add( "Yavuz Selim Keresteci");
Ekip.Add( "Erkan Sezer");
Ekip.Add( "Mehmet Salih Avınç");
foreach (string item in Ekip)
{
MessageBox.Show(item);
}
|
|
09 Şubat 2009 Pazartesi
|
|
|
|
|
C# ile Nümeric Değer
|
Erkan Sezer
|
TextBox gibi componentlara girilen değerin nümeric olmasını kontrol eden birçok makale veya ipucu görmüşsünüzdür, ben burda biraz daha farklı bir metodu anlatacağım.
If `in içine yazdığımız kod ile bize gönderilen TextBox1`in text değereni alırız ve eğer girilen değer nümericse bize true değeri döner ve girmiş olduğumuz sayısal değeri out sayi ile bize geri döner , else düşerek bize sayının değerini gösterir.
Girilen değerde nümeric dışında bir karakter varsa bu bize false dönecektir ve koddada gördüğünüz gibi "Sayi Girmelisiniz" uyarısını verecektir.
int sayi = 0;
if (!int.TryParse(textBox1.Text, out sayi))
{
MessageBox.Show("Sayi Girmelisiniz");
}
else
{
MessageBox.Show(sayi + " Degerini Girdiniz");
}
|
|
05 Şubat 2009 Perşembe
|
|
|
|
|
C# ile Command Line Çalıştırmak
|
Erkan Sezer
|
Command Line`a yazdığımız değere göre çeşitli pencelere açılmakta ve biz isteğimiz exeleri çalıştırabilmekteyiz. Örneğin Run` calc yazarsak hesap makinasi , inetmgr yazarsak IIS , notepad yazarsak txt dosyasi gelmesi gibi.
Bunu kodla yapabilmekteyiz, aşağıda bunun örneğini bulabilirsiniz. Buda calc yerine notepad yazarsak notepad gelecektir.
Tabiki bu kod öncesinde System.Diagnostics namespace`ini projemize eklememiz gerekiyor.
Process Prcs = new Process();
Prcs.StartInfo.FileName = "calc";
Prcs.Start();
|
|
01 Şubat 2009 Pazar
|
|
|
|
|
C# ile Media Player Çalıştırmak
|
Erkan Sezer
|
C# kodları ile media player`ı çalıştırmayı kısaca anlatacağım. Media Player`ı kullanabilmek için toolbaox`a Choose Toolbox Itemd`dan Com Components sekmesinden gerekli olan Media Player componentini eklememiz gerekiyor.
Eklediğimi componenti formumuza sürükleyip bıraktığımızda her zaman kullandığımız Media Player`ı göreceksiniz.
Burda herhangi bir MP3 yayınlamak için çok basit iki satırlıkl bir koda ihtiyacımız olacak. Öncelikle formumuza openFileDialog ekliyoruz ve bunu da ekrandan şarkı seçmekte kullanacağız. Daha sonra component olarak eklediğimiz Media Player nesnesinin Url property`sine seçtiğimiz MP3 `ün ismini vermeniz yeterli.
Tabiki bunu geliştirmek tümden yazdığımız kodlara ve istediğimiz yapıya bağlı olarak değişecektir.
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
axWindowsMediaPlayer1.URL = openFileDialog1.FileName;
}
|
|
01 Şubat 2009 Pazar
|
|
|
|
|
C# `da Monitor Sayisini Bulmak
|
Erkan Sezer
|
Bazi durumlarda bilgisayariniza bagli olan monitor sayisi sizin icin gerekli bilgi olabilmektedir. Ornegin buyuk bir projedesiniz ve kullanicilarin bazilari cift monitor ile calisiyor. Yaptiginiz programda da ekranin biri ikinci monitorde acilmak isteniyor.
Bunun icin oncelikle kac monitor kullaniyorsunuz bunu bilmeniz gerekiyor. Bunu su sekilde yapabilirsiniz.
SystemInformation.MonitorCount;
Bu size monitor saysini verecektir ve sizde ona gore yapilmasi gereken islemleri bir if komutu ile cozersiniz.
if (SystemInformation.MonitorCount > 1) { Yapilmasini istediginiz islemler }
|
|
06 Ocak 2008 Salı
|
|
|
|
|
C# ile Haftanın Gününü Bulmak
|
Erkan Sezer
|
C# ile haftanın hangi günü olduğunu bilgisayarımızın sağ alt köşesinde bulunan windows saatini kullanarak bulabiliriz.
DateTime .Now.DayOfWeek
Kodu bize haftanın hangi günü olduğunu gösterecektir. Peki ben haftanın hangi gününde olduğumuzu türkçe olarak nasıl bulurum gibi bir sorunuz varsa bunuda basit bir if yapısı ile buluruz.
Tabiki windows saatinizin gününü değitirirseniz haftanın günüde ona göre değişecektir:)
If yapısı ile belirtilen kod bloğu şu şekildedir:
string Gun = "";
if (DateTime.Now.DayOfWeek == DayOfWeek.Monday)
{
Gun = "Pazartesi";
}
else if (DateTime.Now.DayOfWeek == DayOfWeek.Tuesday)
{
Gun = "Salı";
}
else if (DateTime.Now.DayOfWeek == DayOfWeek.Wednesday)
{
Gun = "Çarşamba";
}
else if (DateTime.Now.DayOfWeek == DayOfWeek.Thursday)
{
Gun = "Perşembe";
}
else if (DateTime.Now.DayOfWeek == DayOfWeek.Friday)
{
Gun = "Cuma";
}
else if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday)
{
Gun = "Cumartesi";
}
else if (DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
{
Gun = "Pazar";
}
|
|
11 Aralık 2008 Perşembe
|
|
|
|
|
C# ile Folder İçindeki Dokümanların Silinmesi
|
Erkan Sezer
|
C#`da bir folder içindeki dokümanları bulup daha sonra bu dokümanlari
silmek için birkaç satır kod yazarız. Öncelikle içinde doküman olan
folderin pathindeki dokümanlar Directory.GetFiles kodu ile bana dönen
değer içinde foreach yapısı ile alınarak tek tek silinir. Çok
kullanışlı ve basittir.
private void FolderBosalt() { try { String[] Files; Files = Directory.GetFiles(Folder_Pathi); foreach (string f in Files) { File.Delete(f); } } catch (Exception Exc) { MessageBox.Show(Exc.Message); } }
Try-Catch bloğu ile de bana dönen hata mesajını görürüz.
|
|
02 Aralık 2008 Salı
|
|
|
|
|