Geliştirdiğimiz uygulamalarda verilerin birbiriyle olan ilişkilerini göstermek istediğimizde Treeview, işimizi kolaylaştıran kontrollerden birisidir. Bu makalenin sonunda oluşturacağımız uygulama...

Masaüstü projeler hazırlarken, kullandığımız hemen hemen her programda olduğu gibi biz de kullanıcılara menülerle çeşitli fonksiyonellik sunmak isteriz. C#'da ToolStrip kontrolünü masaüstü...

C# yazılım diliyle kodladığımız uygulamalarımızda Listview kontrolünü kullanıcılara basit listeler gösterebilmek için kullanırız. Toolbox'taki Common Controls sekmesinden bir listview kontrolünü forma ekleyerek...

Hazırladığımız yazılımlarda bazı işlemler uzun sürebilir. Böyle durumlarda kullanıcı, program dondu / hata verdi zannetmesin diye, işlemin devam ettiğini belli edecek bazı fonksiyonlar eklemeliyiz. Web sitelerde genellikle "Yükleniyor" yazan veya...

  • Mart 29, 2018
  • /
  • Yorum Yok

Projelerde, özellikle de hassas veriler içeren büyük projelerde, işlemlerin takip edilebilirliği her zaman büyük önem taşır. Geriye dönüp hangi kullanıcının ne işlemler yaptığını, hangi aşamalardan geçtiğini adım adım izleyebilmek, hataları ve nerelerde yanlışlıklar yapıldığını yakalama konusunda işimizi kolaylaştırır.

Kullanıcılarımızın, bir bilgiyi yazarak girmesi yerine daha önceden belirlenen bir listedeki seçenekler arasından seçmesini istediğinizde Combobox kontrolünü kullanabiliriz. Kullanımı son derece kolay olan bu toolu irili ufaklı hemen hemen her projede...

Tek formdan oluşan uygulamalar genellile ya işimizi görmek için yeterli olmaz; ya da çok kullanışsız olur. Projelerimizde çoğu zaman birden fazla form ile çalışmak isteriz. Bu makalede yeni form oluşturup kullanıcı ekranına getirelim ve bu yeni forma parametre...

Geliştirdiğimiz uygulamalarda kullanıcıların girdiği verilerin bir kısmının istediğimiz formatlara uygun olmasını isteriz. Örneğin kullanıcının yaşını girdiği bir textbox'a sayı haricinde bir değer girmemeli. Ya da telefon numarası bilgisi alıyorsak...

Timer classı ve Timer kontrolü, masaüstü uygulamalarından tutun da windows servislere kadar birçok yerde karşımıza çıkar. Timer aracılığıyla, herhangi bir kullanıcı veya ayrı bir thread etkileşimi olmadan, bir işlemin belirli aralıklarla ...

C# dilinde Clipboard classı, clipboarda data atmayı ve clipboarddaki dataya erişebilmemizi sağlar. Kullanımı gayet kolay bir classtır. Bir yazı kopyalamak istersek yalnızca Clipboard.SetText() methodunu kullanabiliriz...

Windows form uygulamalarında, formda resim görüntülenmesini isterseniz bunu kolaylaştıran bir tool var : PictureBox. Kullanımı çok kolay olan bu toolu bir örnek üzerinden anlatacağım. Bu örnekte aynı zamanda...

Projelerimizde çoğu zaman kullanıcının tarih ve zaman seçebilmesini isteriz. Windows form uygulamalarında bu işlev için DateTimePicker tool'unu kullanabiliriz. Toolbox penceresinde "Common Controls" sekmesinden bu tool'u bulup forma sürükleyerek...

C# dilinde System.Net namespace'inde bulunan WebClient classı, projelerimizde sıklıkla kullandığımız classlardan birisi. Bu classı; bir url üzerinden xml / json data çekmek istediğinizde, uzak sunucudan dosyalar çekmek istediğinizde...

Yazılım dillerinde, birbirinden bağımsız iş parçacıklarının her birine Thread ismi verilir. C# dili ve daha doğrusu .Net ortamı, aynı anda birden fazla Thread kullanmamıza olanak sağlar, yani farklı işlemler için birden fazla Thread tanımlayabilir ve bunların aynı anda...

Projelerimizde sıklıkla, değeri null olan değişkenler üzerinden işlem yapmaya çalışıp hatalar alırız. Bu hataların önüne geçebilmek için yine sıklıkla değişkenlerimizin null olup olmadığını kontrol etmemiz gerekir. C# dilinde bir değerin null olup olmadığını...

Uygulamalarımızda bazen başka uygulamalara müdahale etmek isteriz. Bu konuda C# dilindeki Process classı çok işimizi görür. Bir uygulamayı çalıştırmak / sonlandırmak, bir uygulamanın çalışıp çalışmadığını kontrol etmek, bir website açmak gibi...

C# dilinde dosya oluşturmak, taşımak, silmek gibi dosya düzeyinde işlemler yapmak istediğimizde File classı işimizi görecektir. Daha önceki bir makalede Directory classından bahsetmiştim. File classı ve Directory classı birçok...

C# dilinde klasör oluşturmak, silmek, taşımak gibi işlemleri Directory classını kullanarak yapabiliriz. Directory classı System.IO kütüphanesi içindedir, dolayısıyla bu classı kullanabilmek için "using System.IO" kod cümlesini kullanarak bu kütüphaneyi eklemiş...

Daha önceki bir makalemde OpenFileDialog kullanarak kullanıcıların dosya seçebilmesine imkan sağlamayı anlatmıştım. Aynı şekilde eğer kullanıcının klasör seçmesini istiyorsak FolderBrowserDialog kullanabiliriz. C# dilinde FolderBrowserDialog classı, kullanıcının bilgisayarındaki klasörlerin listelenmesini...

Bazı durumlarda uygulama içerisinde tamamen rastgele üretilen değerlere ihtiyaç duyarız. Bu değerler sayı veya harf olabileceği gibi bu ikisinin kombinasyonundan oluşan string türünde veriler de olabilir. Rastgele sayılar özellikle şans veya tahmine dayalı oyunlarda sıklıkla kullanılırlar. Bunun dışında bilgi yarışmalarında farklı sorular ekrana getirilirken, kullanıcılara...

Yazdığımız uygulamalarda zaman zaman 4 işlemden daha ağır seviyede matematiksel işlemler yapmamız gerekir. System.Math class'ı birçok hazır methodu ve statik property'leri ile bir bilimsel hesap makinesi ile yapılabilecek hemen hemen her şeyi C# ile yapabilmemizi sağlar. Örneğin Math.Pow methodu, sayının üssünü almamızı sağlarken Math.Log methodu ile logaritmik işlemler yapılabilir, Math.Sqrt methodu ile karekök alabiliriz.

C# dilinde bir string veriyi, belli bir düzene göre parçalara ayırmak istediğimizde Split() methodunu kullanabiliriz. Split methodunun dönüş tipi string dizisidir. Küçüklü büyüklü hemen her projede sıklıkla ihtiyaç duyulan bir methoddur.

C# dilinde Replace methodu, string data içindeki bir karakter veya karakter grubunun silinmesi için kullanılır. Kullanımı Substring methodunun kullanımına çok benzer. Aynı Substring gibi Replace methodunun da iki override'ı vardır. İlk override...

C# dilinde IndexOf methodu, bir string değer içindeki bir karakter veya karakter grubunun indexini döndürür. Bu değer int tipindedir. String içindeki ilk karakterin indexi 0'dır. Contains methodu...

Substring methodu C# dilinde, bir string değer içindeki harf ya da harfler grubunu seçmek için kullanılır. Substring methodunun iki override'ı vardır. Birincisi yalnızca int tipinde bir parametre(başlangıç indexi) alır. Diğer override...

C# dilinde tip dönüşümü(Type Conversion), bir data tipindeki verinin başka bir data tipine dönüştürülmesidir. Çoğunlukla Convert classını kullanarak yaparız bu dönüşümleri. Convert classını küçük büyük her türlü projede...

SaveFileDialog, kullanıcıların dosyayı kayıt edebileceği konumu seçmesini sağlar. Kullanımı tıpkı OpenFileDialog gibidir...

C# dilinde StreamWriter classı, dosyaların içeriğini değiştirebilmemizi sağlar. Tıpkı StreamReader gibi, bu class da System.IO kütüphanesindedir ve using keywordu ile bu kütüphaneyi referans göstermek gerekir...

C# dilinde StreamReader classı, dosyaların içeriğini okumamızı sağlar. Bu class System.IO kütüphanesi içindedir. Bu demek oluyor ki StreamReader classını kullanabilmek için kod yazdığınız classın(form da bir classtır) en üstündeki...

Projelerimizde kullanıcıların dosya işlemleri yapmasını isteyebiliriz. OpenFileDialog kontrolü, açılan pencere yardımıyla kullanıcının dosya seçebilmesine olanak sağlar...

İki olasılıklı bir if-else statementiniz varsa bunu C# dilinde ternary operatörünü kullanarak tek satıra indirmeniz mümkün...

Kullanıcı uygulamanızda bir butona tıkladığında, imleci hareket ettirdiğinde, klavyesindeki tuşlara bastığında uygulamanızın bunu yakalayıp buna uygun işlemler yapmak istersiniz. Bu konuda eventleri kullanabilirsiniz. Aslında...

C# dilinde skaler data tiplerinin yanında referans data tipleri(reference type) de olduğundan daha önceki makalelerde bahsetmiştik. Delegate, method referansları tutabilen bir referans tiptir. C veya C++ dillerindeki function pointerlara benzerler. Birçok kullanımı vardır. Örneğin...

Bazı projelerimizde, oluşturduğumuz classlara class dışından da etki etmemiz gerekebilir. Classa duruma özel property ya da methodlar eklemek isteyebiliriz. C# dilinde bu ihtiyacımızı...

Projelerde hata ayıklama süreci her zaman çok önemlidir ve bazen de sancılı olabilmektedir. C# dili(aslında neredeyse tüm dillerle) ile kodlama yaparken 3 çeşit hata ile karşılaşırız...

C# dilinde oluşturduğumuz bazı nesnelerin dizi veya listelere benzer şekilde davranmasını isteriz. Indexerlar oluşturduğumuz nesnelerin index değerlerine sahip olmasını ve bu index değerleri sayesinde...

C# dilinde Interface, classlara hangi methodları ve hangi propertyleri kullanmak zorunda olduklarını söylemenizi sağlayan yapılardır. Interface içinde sadece tanımlama yapılır, kod blokları olmaz. Bir nevi classlar için bir şablon oluşturmuş olursunuz Interface'ler sayesinde...

Object Oriented programlama dillerinde en önemli yapı taşlarından birisi miras(inheritance) yapısıdır. Miras, başka bir classın private olmayan elemanlarını kullanabilen yeni bir class oluşturabilmemize olanak sağlar. Miras yoluyla oluşturulan...

İsimlendirilmiş, sayısal sabit değerleri bir araya getiren yapılara C# dilinde enumeration denir. enum keywordu kullanılarak tanımlanır...

Daha önceki makalelerde tam olarak ne olduğunu açıklamasak da propertyleri defalarca kullandık. Örneğin bir Textbox'ta yazan değeri almak için kullandığımız "textbox1.Text" kod cümlesinde "Text", Textbox classının bir propertysidir...

Bazı uygulamalarda bir başka method ile neredeyse aynı, sadece çok küçük farklar barındıran methodlar yazmamız gerekir. Böyle durumlarda yeni isimlerle yeni methodlar oluşturmak kod kirliliğine sebep olacağı gibi...

C# dilinde methodların, classların ve diğer elemanların erişilebilirliğini belirlediğimiz keywordlere erişim belirleyici(Access Modifiers) denir. Erişim belirleyicileri uygulamamızın güvenliğini sağlamak için kullanırız. C# dilinde 5 erişim belirleyici vardır...

Bir Class'ın yeni bir nesnesini oluştururken çoğu zaman bazı default değerler atamak isteriz. Constructor'lar bu konuda bize yardımcı olurlar. Constructor'ları kısaca, bir Class'tan yeni bir nesne oluşturulurken çalışan method olarak tanımlayabiliriz...

Object Oriented Programming dillerinin temel yapı taşı Class(sınıf)'tır. Class soyut bir veri tipidir. Bir Class'tan oluşturulan somut tip nesnedir. Bir Class'ın barındırdığı method ve propertyler, o Class'ın nasıl davranacağını belirler...

C# dilinde, compiler'ın döngüdeki davranışlarını kontrol edebileceğimiz çok önemli continue ve break keywordleri vardır...

Asal sayılar, 1 veya kendisinden başka bir doğal sayıya bölünemeyen doğal sayılardır. 2'den başlayıp, kullanıcının girdiği sayıya kadar tüm asal sayıları bulan bir Windows form uygulaması yapalım...

Method, isim verip istediğimiz zaman tekrar kullanabileceğimiz kod bloklarıdır. Bir uygulamada aynı kod bloğunun tekrar tekrar çalışması gerekiyor olabilir. Aynı kod bloğunu farklı yerlere yazmak(ya da kopyalamak) kod kirliliğine yol açacak ve kodunuzun...

.Net Framework'te, bir uygulamanın çalışması sırasında oluşan hatalar Exception olarak adlandırılır. Bir Exception oluştuğunda uygulamanız donabilir, kapanıp data kaybına neden olabilir ya da türlü...

  • Haziran 15, 2016
  • /
  • Yorum Yok

Tarihteki ilk şifreleme yöntemlerinden birisi Sezar Şifresi'dir. Bu şifreleme yöntemi, bir metindeki tüm harflerin, kendisinden 3 sonra gelen harfe dönüştürülmesiyle sağlanır. Örneğin "deneme" kelimesi, Sezar şifresi ile...

Faktöriyel fonksiyonu verilen pozitif tamsayının kendisinden önceki bütün tamsayılarla 1'e inilinceye kadar çarpılması sonucunda elde edilen çarpımı gösterir. For döngüsünün anlaşılması için en kolay örnek olduğunu düşünüyorum...

100'e kadar olan sayıların çarpımını hesaplayacak bir uygulama yazmak istesek; 1*2*3*....*99*100 şeklinde tüm sayıları yazmanın nasıl bir işkence olduğunu düşünün. Kaldı ki bu kodu yazsanız bile...

C# dilinde listeler(List<>), dizilerle aynı işe yarar desem yanlış olmaz sanırım. En büyük fark(listelerin dizilerden daha kullanışlı olmasının da sebebi), List tipinde bir değişken tanımlarken, alabileceği eleman sayısını...

Diziler, benzer tipteki değişkenleri bir arada tutabilen bir değişkendir. Diziler bir referans tiptir. Skalar bir değişken aynı anda yalnızca bir data tutabilirken, diziler birden fazla data tutabilir. C# dilinde diziler indexi 0'dan başlar; yani ilk dizi elemanının indexi...

Bilgisayarlar matematiksel işlemler yapmaya bayılırlar. Aslında yapabildikleri tek şey de matematiksel işlemdir. C# dilinde matematiksel işlemler, diğer C türevi dillerdekine benzer. Bu makalede de C# ile basit matematiksel işlemler yapacağız...

C# dilinde Switch-case, bir değeri koşullarla kontrol etmemizi sağlar. Switch-case ile yapabileceğimiz her şeyi if-else komutlarıyla da yapabiliriz ancak; Switch-case syntax olarak yazdığımız kodu kısaltabilir ve çok fazla olasılık içeren yapılarda Switch-case kullanmak...

C# dilinde karşılaştırma operatörleri(Logical Operators), değerleri karşılaştırıp bool(true / false) sonuç döndüren operatörlerdir. Projelerde sıklıkla karşılaştığımız ve sıklıkla ihtiyaç duyduğumuz bu operatörleri...

Uygulamalarımızda kullanıcılara seçenekler sunmak için, Checkbox ve Radio Button kontrollerini kullanırız. Checkbox, kullanıcının seçenekler arasından birden fazlasını seçebilmesine olanak sağlarken, Radio Button seçeneklerden yalnızca...

"if" komutu C# dilinde, diğer birçok programlama dilinde olduğu gibi, bir olasılığın gerçek olup olmadığını kontrol etmemizi sağlar. Mesela elimizdeki değişkenin değerinin 9 olup olmadığını if statement sayesinde test edebiliriz...

Daha önceki bir makalede, form kontrollerinin özellik(property)lerini, Properties penceresini kullanmadan, kod yazarak da değiştirebileceğimizi konuşmuştuk. Şimdi bunları nasıl yapabileceğimize bakalım...

Değişken(Variable), data saklamamızı ve tekrar kullanabilmemizi sağlar. C#'da her değişkenin belirli bir tipi vardır. Bu tip, değişken için RAM'de ayrılacak boyutu ve değişkenin alabileceği değerlerin özelliklerini belirler...

Daha önce programlama üzerine ufacık bir çalışma bile yaptıysanız bilirsiniz ki her yeni programlama dili öğrenirken ilk önce "Hello World" yazdırmak adettendir. Biz de bu adeti bozmayalım. Bu uygulama için ihtiyacımız olan tek şey...

Önceki makalede Visual Studio'da yeni bir proje oluşturmuştuk. Bu proje Windows form uygulamasıydı. Windows form uygulamalarında çoğunlukla(her zaman) form ve diğer kontrollerin bazı özelliklerini(property) değiştirmek...

C#, C++'ın programlama kabiliyeti ve Visual Basic'in kolaylığını bir araya getirmek amacıyla Microsoft tarafından yaratılmış object-oriented(nesne tabanlı) bir programlama dilidir. C++ tabanlı bir dildir ve Java ile bir çok ortak özellikleri vardır. Yani...

  • Haziran 6, 2016
  • /
  • Yorum Yok

Yaptığımız birçok projede iletişim formuna ihtiyaç duyarız. MVC ve Entity Framework kullanarak basit bir iletişim formu hazırlayalım. Kullanıcı "Gönder" butonuna tıkladığında forma girdiği dataları jquery ile yakalayıp Ajax ile backend'e göndereceğiz. Backend tarafında ise önce...

  • Haziran 6, 2016
  • /
  • Yorum Yok

Entity framework, tablolarımızda Insert, Update, Delete komutlarını çalıştırmamızı sağlayan otomatik oluşturulmuş sorgular içerir. Ancak bazen bunlar tek başına yeterli olmaz ve daha karmaşık işlemler yapmamız gerekir. Bu komutları pas geçip kendi oluşturduğumuz...

  • Haziran 2, 2016
  • /
  • Yorum Yok

.Net Framework'te raporlama veya başka amaçlarla PDF oluşturmak çoğu zaman başımıza iş açar. Ancak Nuget'ten indirebileceğimiz Rotativa bu konuda işimizi çok kolaylaştırıyor. Rotativa'nın View veya Partial View'ları PDF'e çevirebiliyor olması büyük rahatlık....

  • Haziran 1, 2016
  • /
  • Yorum Yok

Tüm website sahiplerinin paylaştığı muhtemelen tek ortak kaygı sitenin güvenliğidir sanırım. Çoğu zaman en bilindik bazı teknikleri uygulamak bize yeterli gelir. Ancak bazı durumlarda websitenizin güvenliğine daha fazla önem vermeniz gerekir(örneğin bir banka websitesi ise). Önlem almamız gereken en tehlikeli yöntemlerden birisi de...