Jump to content

Textbox Sınıfını Extend Etme


turkoglu98
 Share

Recommended Posts

Arkadaşlar merhaba, C# hakkında fazla bir bilgim yok ve aklımda şöyle bir soru var. C# daki bir projem için güvenlik class ı yazmak istiyorum ama çağırma olmayacak otomatik olacak. Yani ben inputta veri çekerken bir daha güvenlik fonksiyonuna gönderip ordan bir geri dönüş almayacağım. Bunun aynısını ben php de yapabiliyorum o dosyaya gelen tüm POST ve GET leri kontrol edip koda devam ettirtebiliyorum, sonra posttan bir veri çektiğimde o verinin daha önceden güvenlik kontrolünden geçtiğini bildiğim için başka bir şey yapmadan değişkene atayabiliyorum. 

Bunun aynısını da C# da  textbox.Text i extend etme olarak düşündüm. Yani projedeki tüm inputlardan veri çekerken önce kontroller yapılacak sonra veri gelecek.  Yine kodu yazarken  textbox1.Text özelliğini rahatlıkla kullanabileceğim çünkü önceden kontrolü yapılmış olacak. 

İnternette bayağı araştırdım ama düzgün birşey bulamadım. En yakın olarak özelleştirilmiş textbox yapın diyorlar yani textbox sınıfını alıp yeni bir sınıf oluşturun onu kullanın diyorlar Bunun fonksiyon oluşturmadan farkı yok . Bu son çare çünkü bu sefer güvenlik sınıfımı başka bir projeye eklediğimde oradaki tüm text işlemlerini benim yazdığım şekilde değiştirmem gerekiyor.

Umarın derdimi anlatabilmişimdir.  System.Windows.Forms.TextBox sınıfındaki "Text" fonksiyonunu extend etmenin bir yolu var mıdır? Veya dediğim gibi güvenlik sınıfımı eklediğimde kodda değişiklik yapma gereği duymayacağım bir yöntem var mıdır?

Link to comment
Share on other sites

Merhaba,

İlk olarak C#'ta propert'leri override etmeni önermem. Ama bunun yerine event'ları  override edebilirsin. input'a girildiğinde varolan değerini al, değiştiğinde validate et, eğer uymuyorsa eskiye döndür, uyuyorsa devam et. Aşağıdaki gibi bir kod parçası ile çözebilirsin. Denemedim ama hemen hemen böyleydi.

private string _previous;

protected override void OnGotFocus(EventArgs e)
{
   _previous = base.Text;
}

protected override void OnTextChanged(EventArgs e) {
    if(!validation()){
		/// eski değere dön
		base.Text = _previous;
	}
	else{
		/// eski değeri set et
    	base.OnTextChanged(e);
		/// optional: eski değer şimdiki değer yap. 
		_previous = base.Text;
	}
}

Bana kalsa databinding ile yapıp, model property'lerini input'lara bind ederdim. MVVM style.. 

İkinci olarak PHP'deki düşünce tarzını C#'ta uygulamaya çalışırsan çok zorlanırsın, hele ki Desktop app'e uygulamaya çalışırsan 2 kat daha çok zorlanırsın. 

Edited by Bitmap
  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...