Forum
Arkadaşlar merhaba ufak bir uygulama yazıyorum veritabanı sistemiyle. Veritabanı olarak sqlite kullanıyorum. Bir sıkıntım var dünden veri uğraşıyorum. Bilgisi olan varsa yardımcı olursa sevinirim.
Textbox üzerinden para formatında giriş yapmam gerekiyor fakat farklı denemelerde farklı hatalar alıyorum bir türlü yapamadım.
Veritabanında borc,alacak ve bakiye alanları var. Bakiye hesaplaması bakiye = bakiye + (borc-alacak) şeklinde ve bunları veritabanında decimal olarak tutuyorum. Metod ile ekleme işlemini yaptırıyorum. Buraya kadar bir sıkıntı yok ama tutar kısmını yazmaya geldiğim zaman oraya binlik ayraçlı ve virgülden sonra iki basamak olacak şekilde olsun istiyorum ve textboxa yazarken bunun anlık gerçekleşmesini istiyorum.
txtTutar.Text = Convert.ToDecimal(txtTutar.Text).ToString("#,#");
textin changed olayına şunu yazıyorum ancak bu şekilde virgül ekleyemiyorum ve yazmaya başlayınca imleci en sola atıyor imleci sağda tutması için ise txtTutar.SelectionStart = txtTutar.Text.Length; bu kodu ekliyorum hemen altına fakat yine virgül eklenmiyor.
Veritabanına kaydederken decimal tutar = decimal.Parse(txtTutar.Text); şöyle bir değişkene alıp işlemleri gerçekleştiriyorum. Kaydederken incorrect format diyor ve kaydı düz sayı şeklinde ekliyor.
Bunun sırrı nedir bilen varsa yardımcı olursa sevinirim. İstediğim şu texte yazmaya başlayınca sağdan başlayacak ve diyelim ki 4. rakamı yazdıktan sonra 1.234 olacak 5. rakamı yazınca 12.345 olacak bu şekilde olduktan sonra en son virgüle basıp kuruş kısmını iki basamaklı olarak yazdırmam gerekiyor.
Teşekkürler...
aşağıdaki şekilde denermisin .
var tutar= string.Format("{0:N2}",Convert.ToDouble(txtTutar.Text));
bunu textchanged olayına yazdım ve altına da txtTutar.Text=tutar; ekledim fakat yazmaya başlayınca ilk rakamı girince diyelim 5 yazdık otomatik olarak 5,00 yapıyor ve imleci sola alıyor tekrar bir rakam daha girince 6 girdik diyelim 5'in sağına yazıyor bunu 56,00 oluyor yani.
bu şekilde denemiştim zaten ama dediğim gibi oluyor. N0 yapınca da ,00 yazmıyor ama virgül koymaya da izin vermiyor.
Doğru hatırlıyorsam MaskedTextBox bu amaçla kullanılabiliyordu.
Aşağıdaki şekilde deneyin;
void Main()
{
var frm = new Form1();
frm.ShowDialog();
}
public class Form1 : Form
{
public Form1()
{
MaskedTextBox mt = new MaskedTextBox();
mt.Mask = "999.990,00 ₺";
mt.RightToLeft = RightToLeft.Yes;
this.Controls.Add(mt);
}
}
teşekkürler Volkan hocam fakat bu şekilde kullanıcıyı belirli bir miktar girmesi için zorluyoruz ve ondan fazlasını yazamıyor kullanılabilirlik açısından pek iyi olmuyor. uğraşıp metod yazacağım gibime geliyor en sonunda 🙂