Categories
C# Microsoft .NET

DexExpres`de Chart Kontrolu

MicrosoftDexExpress`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.

Categories
C# Microsoft .NET

Split Metodu

MicrosoftC# 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.

Categories
C# Microsoft .NET

Custom Datatable Kullanimi

Microsoft.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;

Categories
C# Microsoft .NET

Ping Atma

MicrosoftSon 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());

}

Categories
C# Microsoft .NET

Ilk WCF Service

MicrosoftUzun suredir WCF ile ilgili biseyler yazmayi dusunuyordum ama hicde firsat bulamamistim. Ilk tanismamin 2007 yilinda olduguWCF ile ilgili ilk yazacagim bilgiler artik bu konuda da yazmaya devam edecegim anlamina geliyor.

Genel olarak SOA mimarisindan ve WCF in (hep oyle denir ABC sinden) Address , Contract ve Binding lerinden bahsetmeyecegim, bunlar birazda isin mantigi da olsa bunlari internette cok kolay bulabilmekteyiz ve benim gibi yazmayi sevmeyen birininde bunlari uzun uzun anlatmasi cok zor 🙂

Yine kucuk bir ornek verecegim , ornegimizde her turlu metodumuzu yazmamiza saglayan ServiceContract ve bunun altinda bu metodlari niteleyen OperationContract lar ile toplama cikar gibi islemler yaptiracagiz. Bundan sonraki yazimizda da WCF service mizi baslatacak ve bu islemleri cagirarak WCF kullanarak islem sonuclarini gorecegiz.

Oncelikle ,  yazacagimiz kullanacagimiz service bizim yazacagimiz Interfaceden tureyecek.  Asagidaki gibi interfaceimizi yaziyoruz .

[ServiceContract]

public interface Iservice1

{

[OperationContract]

Double Topla(Double x, Double y);

[OperationContract]

Double Cikar(Double x, Double y);

[OperationContract]

Double Carp(Double x, Double y);

[OperationContract]

Double Bol(Double x, Double y);

}

Daha sonra bundan tureyen bir service yazacagiz.  Dikkat edersek kullandigimiz Service1 Iservice interface inden turuyor.

public class Service1 : IService1

{

public double Topla(double x, double y)

{

return x + y;

}

public double Cikar(double x, double y)

{

return x – y;

}

public double Carp(double x, double y)

{

return x * y;

}

public double Bol(double x, double y)

{

return x / y;

}

}

Bundan sonraki WCF yazimizda kullanacagimiz service yi baslatacagiz ve yukardaki islemlerin sonuclarini alacagiz.

Categories
C# Microsoft .NET

Fonksiyonlarin Asiri Yuklenmesi

MicrosoftFonksiyonlarin 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);

Categories
C# Microsoft .NET

XML Okuma

MicrosoftXML dosyalarını okuma ile ilgili bir bilgi paylasacagim. Oncelikle dataset ile XML il okuyacagim ve bu bircok yazilimcinin tercih ettig yontemdir , daha sonra ise XML de ki herhangi bir nodu nasil okuyacagini anlatacagim. XML yapisi sagidaki gibidir.

Dataset kullarak butun XML in node larini okuyup bunu datasete atar ve istedigimiz nodu datasetin table lari arasinda dolasarak elde ederiz.

string xml = @”XML.xml”;

DataSet ds = new DataSet();

ds.ReadXml(xml);

Peki sadece name nodundaki degerlere erismek istiyorsak ne yapacagiz? Orda da name nodunu sorgulariz. Name nodunu sorgulamak icin oncelikle onun bulundugu noda SelectNodes ile gitmemiz gerekir daha sonra da Foreach yapisi ile bu nodda doner ve InnerText ile name node larindaki degeri elde ederiz. Bunu da ornegi asagidadir.

XmlDocument doc = new XmlDocument();

doc.Load(@”XML.xml”);

XmlNodeList nodes = doc.SelectNodes(“TaskList/Flows/Flow/name”);

foreach (XmlNode node in nodes)

{

      MessageBox.Show(node.InnerText);

}

<?xml version=”1.0″ encoding=”ISO-8859-9″?>
<TaskList>
<Flows>
<Flow>
<name>Evrak Daðýtým</name>
<Columns>
<Column>Akýþ Ýsmi</Column>
<Column>Evrak Konusu</Column>
<Column>ID</Column>
<Column>Geldiði Kurum</Column>
<Column>Gönderim Tarihi</Column>
<Column>Kayit No</Column>
<Column>Yevmiye No</Column>
<Column>Gönderilen</Column>
</Columns>

</Flow>
<Flow>
<name>Evrak Akýþ</name>
<Columns>
<Column>Akýþsd</Column>
<Column>Evr</Column>
<Column>Isd</Column>
<Column>rum</Column>
<Column>Tarihi</Column>
<Column>No</Column>
<Column>Yevmi</Column>
<Column>Gönde</Column>
</Columns>
</Flow>
</Flows>
</TaskList>

Categories
C# Microsoft .NET

Params Keywordu ile Metoda Parametre Gecirme

MicrosoftMetodlara 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());

Categories
C# Microsoft .NET

String Formatlama

MicrosoftEkranlara 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.

Categories
C# Microsoft .NET

Environment Variables

MicrosoftSistemlerimizde 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());