Form | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar Form

Asp.Net Core uygulamalarında Google reCaptcha kullanımı

17 September 2016 Yorum yapılmamış

Bu makalede Google reCaptcha servisini Asp.Net Core uygulamasında nasıl kullanacağımızı adım adım inceleyeceğiz.

Öncelikle Google reCaptcha Admin sayfasında site ismi, adresi gibi bilgileri girerek yeni bir kayıt oluşturmamız ve eğer bilgisayarınızda .Net Core yüklü değilse yüklememiz gerekiyor.

Örnek projeyi oluşturmak istediğimiz dizine Command Prompt (Windows) veya Terminal (MacOS, Linux) içerisinden gidiyoruz ve aşağıdaki kodları çalıştırıyoruz;

Proje tipi olarak Empty Web Application, proje ismi olarakta asp-net-core-google-recaptcha belirleyelim.

project.json dosyasını açarak, dependencies kısmının içerisine aşağıdaki paketleri yazalım;

Paketleri indirmek için Command Prompt içerisinde dotnet restore komutunu çalıştırmamız lazım;

Şimdi Startup.cs dosyasını açalım, Configure() ve ConfigureServices() method’larının içerisini aşağıdaki şekilde değiştirelim;

Şimdi, projenin root dizininde Controllers dizini oluşturalım, içerisine HomeController.cs dosyası ekleyelim ve aşağıdaki kodları yazalım;

Artık, projenin root dizininde Views/Home dizini oluşturup, içerisine Index.cshtml dosyası ekleyebilir, aşağıdaki kodları yazabiliriz;

Html kodları içerisindeki g-recaptcha css class‘ına sahip olan elementin data-sitekey attribute değeri Google reCaptcha Admin konsolunda oluşturduğumuz kaydın SiteKey alanında yazan değer olmalı.

Kullanıcının kendini doğruladığını sunucu üzerinde de kontrol etmemiz gerekiyor, bunun için, HomeController.cs dosyasını açalım ve aşağıdaki kodları ekleyelim;

secret parametresi için, Google reCaptcha Admin konsolunda üretilen Secret Key alanının değerini kullanmamız gerekiyor.

Command Prompt açarak dotnet run komutunu yazalım ve uygulamanın çalıştığını görelim;

Artık Microsoft Edge tarayıcısını açabilir, http://localhost:5000 adresinden sayfayı görebiliriz;

Eğer Google reCaptcha için Ben robot değilim adımını yapmazsak, “Captcha doğrulanmamış“, yanlış doğrularsak, “Captcha yanlış doğrulanmış” adımları gerçekleşecek.

Tüm adımları doğru gerçekleştirirsek, “Herşey doğru” adımına gelecek.

C# ile Form’a gölge efekti verelim ve titreme sorununu düzeltelim

22 July 2010 2 yorum

Windows Forms uygulamalarında Form‘un gölge efektine sahip olmasını istiyorsak, öncelikle Form‘un FormBorderStyle özelliğini None yapmalıyız.

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

Form sınıfının CreateParams özelliğini override etmemiz gerekiyor. CreateParams özelliği geriye CreateParams tipinde bir nesne döndürür.

protected override CreateParams CreateParams
{
	get
	{
		CreateParams cp = base.CreateParams;

		cp.ClassStyle |= 0x20000;

		return cp;
	}
}

CreateParams sınıfının ClassStyle özelliğine 0x20000 değerini ekliyoruz. Böylece formumuz çalışmaya başladığında etrafında gölge gözüküyor.

Gölgeli Form

Form üzerine çok fazla kontrol eklediğimizde, özellikle eğer kontroller hafızada çok yer kaplayan 3.parti kontrollerden ise; formumuzda titreme diyebileceğimiz bir efekt oluşmaya başlar.

Çoğu zaman bu durum rahatsızlık oluşturma derecesine kadar varır.

Bu sorunu çözmek için, kontrollerin DoubleBuffered özelliğini true değerine ayarlamamız gerekmektedir.

Fakat DoubleBuffered özelliği Form sınıfının değil Control sınıfının bir özelliği olduğundan dolayı, Form’un titremesini gidermek için kullanamayız.

Form sınıfının CreateParams özelliğinde bu sorunu da çözebiliriz;

protected override CreateParams CreateParams
{
	get
	{
		CreateParams cp = base.CreateParams;

		cp.ExStyle |= 0x02000000;

		return cp;
	}
}

Bu sefer CreateParams sınıfının ExStyle özelliğine 0x02000000 değerini eklememiz gerekiyor.

Örnek uygulamanın tüm kodu;

protected override CreateParams CreateParams
{
	get
	{
		CreateParams cp = base.CreateParams;

		cp.ClassStyle |= 0x20000;

		cp.ExStyle |= 0x02000000;

		return cp;
	}
}

C# Programımızın Ekrandaki Yerini Hatırlaması

10 March 2010 2 yorum

C# ile yazdığınız uygulamanın her açılışta bir önceki kapatıldığı yerde açılmasını isteyebilirsiniz.

Aslında gayet basit olan bu işi yaparken düşünmemiz gereken bazı detaylar var. Mesela;

Ya uygulama kapatıldıktan sonra kullanıcı windows’un çözünürlüğünü değiştirdiyse?

Kullanıcı birden fazla monitör kullanıyorsa, ve uygulama kapatıldıktan sonra monitörlerin ayarlarını değiştirdiyse?

Hem bu noktaları gözönünde bulunduracak, hem de kolay şekilde programlanacak bir çözümü aşağıda kodladım;

Öncelikle formumuz kapatılırken, tam olarak bulunduğu noktayı bir yere kaydetsin. Bunu uygulamanın Settings penceresine iki tane özellik ekleyerek yapalım;

FormLocation ve FormSize

Formumuzun base class‘ı olan Form class‘ından gelen OnClosing virtual method’unu override edelim;

protected override void OnClosing(CancelEventArgs e)
{
	Properties.Settings.Default.FormLocation = this.Location;
	Properties.Settings.Default.FormSize = this.Size;
	Properties.Settings.Default.Save();

	base.OnClosing(e);
}

Uygulamamızın Settings penceresinden eklediğimiz property‘lere

Properties.Settings.Default

ile ulaşabiliriz.

Şimdi, form’umuzun base’den gelen OnLoad virtual method‘unu override edelim ve açıldığında eski yerine konumlanmasını sağlayalım;

protected override void OnLoad(EventArgs e)
{
	base.OnLoad(e);

	Point konum = Properties.Settings.Default.FormLocation;
	Size boyut = Properties.Settings.Default.FormSize;

	bool isOnScreen = false; /// Formun gözükür olup-olmadığını kontrol edelim
	foreach (Screen screen in Screen.AllScreens)
		if (screen.WorkingArea.Contains(konum))
			isOnScreen = true;

	if (!isOnScreen) ///Eğer formumuz görünür değilse, görünür yapalım
		this.SetDesktopLocation(Screen.PrimaryScreen.WorkingArea.Left, Screen.PrimaryScreen.WorkingArea.Top);

	if (boyut.Width < 10 || boyut.Height < 10) /// Formun boyutları çok küçükse, normal hale geri getirelim
		this.Size = new Size(300, 300);
}

Yukarıdaki kod parçalarını sizler de kendi uygulamalarınızda kullanabilirsiniz.