PDA

View Full Version : سوال: مشکل در استفاده تابع جهت جدا کننده ارقام - Thousand separator



سمانه علوی فر
یک شنبه 08 خرداد 1390, 10:56 صبح
با سلام و خسته نباشید
لطفا مرا راهنمایی کنید:
می خواهم هنگامی که در text box عددی را تایپ می کنم ارقام با جداکننده کاما از هم جدا شوند
لذا از تابع زیر استفاده می کنم:




txtCashVal.Text = double.Parse(txtCashVal.Text).ToString("N2");



اما مشکل این جاست که این تابع Thousand separator ارقام را به هم میریزد
مثلا
123456789
خروجی :
97,85,61,234
را می دهد.

چه باید بکنم؟

saman6384
یک شنبه 08 خرداد 1390, 12:02 عصر
با استفاده از String.format
نمونه کدشو فرستادم

سمانه علوی فر
یک شنبه 08 خرداد 1390, 12:35 عصر
با استفاده از String.format
نمونه کدشو فرستادم

مرسی
این تابع برای من اصلا کار نمی کند!
ورودی و خروجی هیچ تفاوتی ندارد



txtCashVal.Text = string.Format("{0:n}", txtCashVal.Text );

اشکال از کجاست؟

saman6384
یک شنبه 08 خرداد 1390, 12:39 عصر
خوب شما اول باید اون تکست رو به یه مقدار عددی تبدیل کنی

string str = "433546655";
textBox1.Text = string.Format("{0,10:n}",Convert.ToDouble(str));

سمانه علوی فر
یک شنبه 08 خرداد 1390, 12:56 عصر
خوب شما اول باید اون تکست رو به یه مقدار عددی تبدیل کنی

string str = "433546655";
textBox1.Text = string.Format("{0,10:n}",Convert.ToDouble(str));

این 10 رو که می ذارم تو فرمت به طور کلی به هم میریزه

کد زیر هم اصلا تاثیری نداره!



string str = txtCashVal.Text;
txtTotalCash.Text = string.Format("{0:n}", Convert.ToDouble(str));

saman6384
یک شنبه 08 خرداد 1390, 13:07 عصر
جالب!:متفکر:

تو این یکی کد از یه تکست باکس دارم میخونم میریزم تو یک تکست باکس دیگه!
داره جوابم میده!

سمانه علوی فر
یک شنبه 08 خرداد 1390, 13:27 عصر
جالب!:متفکر:

تو این یکی کد از یه تکست باکس دارم میخونم میریزم تو یک تکست باکس دیگه!
داره جوابم میده!
مرسی
جواب میده ولی عدد رو به هم میریزه

مثلا 123456789 میشه :

895,671,234

فکر کردم شاید به خاطر right to left تکست باکس باشه ولی نبود
آقا ببخشید ها... این مشکل از صبح ما رو سرکار گذاشته

saman6384
یک شنبه 08 خرداد 1390, 14:10 عصر
کد تو آپ میکنی ببینیم!

چون واسه من بهم نمیریزه!

سمانه علوی فر
یک شنبه 08 خرداد 1390, 14:29 عصر
کد تو آپ میکنی ببینیم!

چون واسه من بهم نمیریزه!




private void txtCashVal_TextChanged(object sender, EventArgs e)
{
txtCashVal.Text = string.Format("{0:n0}", Convert.ToDouble(txtCashVal.Text));
}



کد دقیقا همین یک خطه ولی تو یه پروژه گنده هست این کد اشکالی داره؟

Ata_a_b
یک شنبه 08 خرداد 1390, 16:26 عصر
با سلام
كد درست كار مي كنه بدون مشكل
ولي واسه برگردوندن به حالت عدد چيكار بايد كرد.
من واسه خودم يه تابع واسه اينكار نوشته بودم ولي مي خوام بدونم با خود سي شارپ مي شه اين كارو ساده انجام دادو بدون دردسر؟

saman6384
دوشنبه 09 خرداد 1390, 00:41 صبح
private void txtCashVal_TextChanged(object sender, EventArgs e)
{
txtCashVal.Text = string.Format("{0:n0}", Convert.ToDouble(txtCashVal.Text));
}



کد دقیقا همین یک خطه ولی تو یه پروژه گنده هست این کد اشکالی داره؟


درسته ، با این کدی که شما نوشتی منم تست کردم ، به هم میریزه

پیشنهاد میکنم به جای اون event از event های دیگه مثه این دوتا استفاده کنی


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
textBox1.Text = string.Format("{0:n0}", Convert.ToDouble(textBox1.Text));
}

private void textBox1_Leave(object sender, EventArgs e)
{
textBox1.Text = string.Format("{0:n0}", Convert.ToDouble(textBox1.Text));
}

سمانه علوی فر
دوشنبه 09 خرداد 1390, 09:18 صبح
درسته ، با این کدی که شما نوشتی منم تست کردم ، به هم میریزه

پیشنهاد میکنم به جای اون event از event های دیگه مثه این دوتا استفاده کنی


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
textBox1.Text = string.Format("{0:n0}", Convert.ToDouble(textBox1.Text));
}

private void textBox1_Leave(object sender, EventArgs e)
{
textBox1.Text = string.Format("{0:n0}", Convert.ToDouble(textBox1.Text));
}


خیلی ممنونم
حل شد
مشکل هم تو همون textchange بود چون به محض اینکه حروف رو میگرفت این بلا سرش میومد


بازهم مرسی از توجهتون

anasheh2
چهارشنبه 16 فروردین 1391, 12:27 عصر
سلام

متاسفانه من با کدهایی که نوشتید به جواب نرسیدم می شه لطفا" کسی کد درست را ارسال کنه.

با تشکر