PDA

View Full Version : جداکننده اعداد در تکست باکس



civilmajor
پنج شنبه 21 خرداد 1394, 19:51 عصر
سلام من یه تکست باکس دارم که میخوام اعداد را با جدا کننده نمایش بده ولی تقریب نداشته باشه و قابلیت استفاده از کلید Backspace هم در اون فعال باشه.
کدی که استفاده کردم اینه:

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


و داره جواب میده اما یه ممیز هم واسم میندازه که اینو نمیخوام
اگر میشه کمکم کنید که بتونم این کار را انجام بدم و فقط خود عدد را بدون ممیز اعشار و تقریب بهم نشون بده
ممنون
این عکس مال وضعیت فعلیه که نمیخوام اینطور باشه :

132150

davidrobert
پنج شنبه 21 خرداد 1394, 20:43 عصر
بهتون توسعه میکنم از Textbox سفارشی که در این تا پیک هستش استفاده کنید چون کار ر اندازه شما هستش و کد نویسی شما رو خیلی کم میکنه و مقدار صفر اضافه هم خارج میشه چون شما اندیس رو واحد پول گذاشتید و گفتید 2 تا صفر آخرش اضافه کنه. این تکس باکس همه نوع ویژگی برای کار شما رو دارد.
http://barnamenevis.org/showthread.p...8C%DA%98%D9%87 (http://barnamenevis.org/showthread.php?498054-textBox-%D9%88%DB%8C%DA%98%D9%87)

civilmajor
پنج شنبه 21 خرداد 1394, 20:54 عصر
اگر بخوام همون کد رو درست کنم باید چکار کنم؟
راه حل دیگه ای هم هست؟
ضروریه،لطفا کمکم کنید
سپاس فراوان

RmeXXXXXXXXX
پنج شنبه 21 خرداد 1394, 21:33 عصر
از اطلاعات کلاس CultureInfo استفاده میشود.
فرهنگ اختصاصی ایجاد نمائید. وراثت.

internal class ThisCulture : System.Globalization.CultureInfo
{
public ThisCulture():base("fa-IR")
{
this.NumberFormat.CurrencySymbol = "تومان";
this.NumberFormat.CurrencyGroupSeparator = ",";
this.NumberFormat.CurrencyDecimalDigits = 0; تعداد رقم اعشار برای نوع decimal

this.NumberFormat.PercentDecimalDigits = 0;
this.NumberFormat.PercentSymbol = "%";

this.NumberFormat.NumberDecimalDigits = 0; تنظیم تعداد رقم اعشار
this.NumberFormat.DigitSubstitution = System.Globalization.DigitShapes.Context;


}
};

سپس در متد Main برنامه دستور زیر:

var cal = new ThisCulture();// System.Globalization.CultureInfo.GetCultureInfo("fa-IR");
Application.CurrentCulture = cal;
Application.CurrentInputLanguage = InputLanguage.FromCulture(cal);

البته اگر cal==null باشد یعنی زبان فارسی روی سیستم نصب نیست.
از این به بعد برای تبدیل اعداد به رشته کافیه از دستور زیر استفاده کنید:

decimal money= 125M;
this.textBox1.Text= money.ToString("C");

البته بدین نحو واحد پول رو هم به رشته اضافه می کند. (در اینجا تومان)

civilmajor
پنج شنبه 21 خرداد 1394, 21:57 عصر
فک کنم راه اولتون بهتر بود
فقط لطف کنید بگید کجا کپی کنم اون فایل dll رو
سپاس

davidrobert
جمعه 22 خرداد 1394, 11:25 صبح
اون فایل dll رو در پوشه bin کنار فایل اجرای اضافه کنید و در برنامه بیاد در ابزار ها اون رو اضافه کنید و وقتی اضافه شد تمام اون ویژگی ها رو هم داره. و تو هر فرمی خواستید میتونید اضافه کنید.

civilmajor
جمعه 22 خرداد 1394, 12:38 عصر
مشکلم توی نحوه اضافه کردن در ابزار ها هم هست
لطفا کمکم کنید

davidrobert
جمعه 22 خرداد 1394, 14:07 عصر
برای اضافه کردنش باید اول روی قسمتی در ToolBox کلید کنید و گذینه.
132165
132166
132167
به این صورت روی فایل کلیک میکنی و فایل در قسمت مورد نظر ToolBox قرار میگیری و میتوانید در ابزارتون استفاده کنید.

@liReza11800
جمعه 22 خرداد 1394, 15:17 عصر
من همیشه از این استفاده می کنم
خیلی هم عالی

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

textBox1.Tag = "0";
textBox1.Text = (string)textBox1.Tag;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
TextBox txt = sender as TextBox;
string str = txt.Text.Trim();
if (str == string.Empty)
{
txt.Text = "0";
txt.Select(0, 1);
}
else if (str != "0")
{
txt.Text = Convert.ToDecimal(txt.Text).ToString("#,#");
txt.Select(txt.Text.Length, 1);
}
}
}
}

davidrobert
جمعه 22 خرداد 1394, 17:04 عصر
فکر نکنم کد شما کمتر ازز من باشه من از این استفاده میکنم درصد خطاش خیلی کم هستش و مشکلی در ذخیره و مقدار صفر ایجاد نمیکنه
this.Text = string.Format("{0:n0}", double.Parse(this.Text.Replace(",", "")));
this.Select(this.Text.Length, 0);