Xamarin Forms Giriş Ekranı (YAKINDA!)

Eyyyoo herkese selamlar arkadaşlar Truegram adlı projemin mobil uyguması için geliştirdiğim giriş ekranını sizlerle paylaşacağım.
Bir sorun olmazsa planladığım paylaşım tarihi 30.12.2019 olacaktır, görüşmek üzere 🙂

Proje içinde olacak konular;

– Xamarin Custom Font,
– Binding Kullanımı,
– Grid.ColumnDefinitions ve Grid.RowDefinitions kullanım mantığı,
– CustomEntry & Models & Renderer kullanımı.

C# Windows Form Hata Geri Bildirimi

Eyyoo eyyoo herkese selamlar….

Satışa sunduğumuz program bazen bilinmedik sebeplerden dolayı kendini kapatabilir veya diğer sebeplerden dolayı sorunlar çıkartabilir. Bu ve buna benzer durumlarda müşterinin bilgisayarına bağlanıp kontrol etmek biraz profesyonellik dışı olduğu için müşterinin aldığı hatayı otomatik olarak bize mail attırabilir veya hata dosyasını kaydettirebiliriz. Nasıl mı? Buuuyyrunnnn;

İlk önce Program.cs ‘de ki Main classına bir hata yakalayıcısı ekliyorum.

Application.ThreadException += new ThreadExceptionEventHandler(ErrorThread);

Şimdi hata durumunda tetiklenecek olan ErrorThread eventini oluşturuyorum;

Hatanın ne olduğunu anlayabilmem için ThreadExceptionEventArgs içinde bulunan Exception.Message ifadesini hata nedeni olarak gösteriyorum…

Şimdi programımız olası bir hata durumunda .exe‘nin bulunduğu yere error.txt diye bir metin belgesi oluşturup dakika dakika kaydettiğini görebilirsiniz 🙂

Peki.. hatayı mail olarak göndermek istiyorsak ne yapmalıyız diyorsanız çözümü çok basit.. hemen projeme sendMail adında bir class açıyorum..

Bu sefer metin belgesi kodumu siliyorum ve mail göndermeyi tetiklettiriyorum.

Programı hataya düşürdüğüm zaman gördüğünüz gibi otomatik olarak mail hesabıma düştü 🙂

Bu konumuzda bu kadar eğer projelerinizde neler olup bittiğini öğrenmek istiyorsanız bu kısa yolu kullanarak öğrenebilirsiniz.
Herkese bol mantıklı kodlamalar 🙂

C# Veri Kapsülleme (Class Encapsulation) {Get/Set Mevzuları}

Eyyoo eyyoo herkese selamlar…
Bugün sizlere github’da ki projelere bakınca ‘bu değişkenlere neden sadece int veya string diye bırakmıyoruz?/niye get-set ile uğraşıyoruz?/nedir bu get-set?” dedirten veri kapsüllemeyi inceleyip, nasıl kullanılacağını örnekleriyle birlikte sizlere anlatmaya çalışacağım.

Kapsülleme, sınıf içindeki değişkenlere erişimi kaldırmak ya da kısıtlamak için kullanılır. Önemli bir değişkeni public olarak tanımlamak, değişkene yazılımcı tarafından -bilinçli ya da bilinçsiz- müdahaleye açık hale getirir. Bu da sınıf içindeki metodların çalışmasını olumsuz etkileyebilir. Bu gibi durumların önüne geçmek için kapsülleme tekniği kullanılmaktadır.(*1)

Yanii.. Get ve Set metodlarını birer kontrol mekanizması olarak düşünebiliriz . Kod blokları arasında oluşabilecek hataları önceden engelleyen “hoopp hemşerim nereye” diyen bodyguard’ımız 🙂 tabi sadece hataları engellemek için değil, diğer istediğimiz limitlemeleri, koşul kontrollerini de get & set içinden yapabiliriz.

Bilmemiz gereken bilgiler;
• get : Kapsül içindeki verileri okumamız için çalışan metod. (Get -> Getir olarak aklınızda kalabilir)
• set : Kapsüle veri göndereceğimiz zaman kullanacağımız metod.
• value : Kapsüle dışardan gelen veriyi incelemek veya atama yapacağımız zaman kullanacağımız anahtar kelime,
• return : Geriye bir değer döndürmemize yardımcı olan anahtar kelime.

Örneğin nerelerde Get&Set kullanabiliriz?
– Kimlik numarasına harf ataması yapılmasını engelleme durumunda,
– Belirli bir kritere uygun olup olmamasını kontrol ettirme gibi durumlarla örneklendirebiliriz..

Şimdi birlikte kısa bir örnek yapalım;
Hedefimiz şu : Kullanıcıdan bir TC kimlik numarası isteyeceğiz ve TC numarasını tekrar çağırdığımızda ilk 4 hanesini görüp geri kalanını yıldız (*) ile gizleyeceğiz.
(benzeri örnek: 16haneli kredi kartı bilgisinin ilk 4 hanesini görüp kalanının *** olması gibi..)

İlk önce Personel.cs olarak bir class açıyorum ve malzemelerimi yavaş yavaş ekliyorum;
1-) _tckimlikNumarasi adında uzaklardan erişimi olmayan bir private değişken oluşturuyorum.
2-) tckimlikNumarasi adında her yerden erişilebilen, gelen veriyi _tckimlikNumarasi ‘e aktaracak bir kapsül oluşturuyorum.

* _tckimliknumarasi olarak açılan değişkenim private olduğu için diğer classlardan erişimi olmayacaktır. Veri gönderdiğim zaman bütün iş yükü tckimlikNumarasi ‘nin set bloğu arasında olacaktır.

Şimdi projeye geri dönersek; İlk önce kullanıcıdan gelen TC numarasının boş olup olmadığını daha sonrasında da 11 haneli olup olmadığını kontrol edeceğiz. Eğer kriterlere uyuyorsa hata mesajım çıkacak, uymuyorsa direk else bölümüne geçip _tckimliknumarasi değişkenine verimi atayacağım.

* Şimdi set tarafımdaki koşullarım bitti, hemen get tarafını kodlamaya başlıyorum.

Get tarafında ki amacım neydi? tckimlikNumarasi çağırdığım zaman 11 hanenin ilk 4hanesini gösterip 7haneyi yıldız yapmaktı…

Hatırlarsanız string değerlerin belirli bir aralığını almak istiyorsak Substring kullanıyorduk. O yüzden _tckimliknumarasi değişkenime 0,4 Substringi uygulayıp sonuna da yıldızlarımı ekledim mi istediğim her şey olmuş olacak 🙂

Personel.cs tarafım hazır, Program.cs tarafına geçip per adında Personel classını üretiyorum.

Artık işim personele tc numarası atamak ve tc numarasını çağırmak…

Kodumuzu şimdi inceleyelim bakalım;