چه طوری می تونم وقتی اعداد رو تو یه textbox وارد می کنم سه رقم سه رقم اونها رو از هم جدا کنم
چه طوری می تونم وقتی اعداد رو تو یه textbox وارد می کنم سه رقم سه رقم اونها رو از هم جدا کنم
سلام ، امیدوارم این بتونه کمکت کنه
در رویداد KeyPress تکست باکس بنویس
بعد در رویداد TextChanged بنویس
if (char.IsLetter(e.KeyChar))
e.Handled = true;
Int64 N;
try
{
String S;
S = NumericT.Text.Replace(",", "");
N = Convert.ToInt64(S);
NumericT.Text = N.ToString("#,#");
NumericT.Select(NumericT.Text.Length, 1);
}
catch
{
}
finally
{
this.Invalidate();
}
که NumericT اسم تکست باکسه شماست .
البته یه خورده ایراد داره ولی یکم باهاش ور بری کامل تر میشه . می تونی یک کلاس برای این نوع تکست باکس بسازی که بتونی به ToolBox اضافش کنی .
راستی ببخشید کد یه خورده قاطیه . نمی دونم کد رو چطور باید Paste کرد .
private void textBox1_TextChanged(object sender, EventArgs e)
{
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = 0;
textBox1.Text = Decimal.Parse(textBox1.Text, NumberStyles.AllowThousands).ToString("N", nfi);
textBox1.Select(textBox1.Text.Length, 0);
}
با توجه به مقدار و اندازه عددی که وارد میشه نوع متغییر تعریف شده را تغییر بده (هر چه عدد بزرگتر متغییر بزرگتر)!
آقای صالحی از جوابتون متشکرم ولی متوجه نشدم منظورتون از توضیحی که در پایان دادید چیه
و اینکه اگه بخوام عدد اعشاری بگیرم چیکار باید کرد چون کدی که شما فرستادید برای اعداد اعشاری خطا میده
منظورم این بود که محدوده عددی که وارد میشه آنقدر زیاد نشه که خطای سرریز بده (بزرگترین نوع داده را انتخاب کنید- در قسمت Parse )
برای انواع مختلف اعداد قسمت FormatString (پارامتر "N") و NumberStyle رو در حالت های مختلف چک کنید.
اعشاریش رو هم تست نکردم تا حالا، یه کم با این فرمت هاش ور برید درست میشه(لینک های زیر رو ببینید)!
Standard Numeric Format Strings
NumberStyles Enumeration
از این استفاده کن ولی باید کمی کدو ست بکنی با چیزی که می خواهی
(string.Format("{0:0,0}", 876567876
سلام
من دستوری نوشتم که با استفاده از اون فرمت text را تغییر می ده .
منظورم اینه که یک text box روی فرم گذاشتم در حالت اجرا وقتی داخل textbox چیزی می نویسم خودش 3 تا 3 تا علامت (،) قرار می دهد . ولی وقتی دکمه backspace را هم می زنیم باز هم به حساب عدد فرض می کند و بسته به اون شماره می اندازد و اینجاست که ترتیب به هم می خوره . می خواهم کاری کنم که دکمه backspace را به حساب نیاره . ممنون می شم کمکم کنید.
نمی دونم شما برای جدا کردن سه رقم سه رقم اعداد چیکار کردی ولی من این مشکل رو داشتم و تو سایت مطرح کردم یکی از دوستان بهم جواب داد جوابشم این بود
;() NumberFormatInfo nfi = new NumberFormatInfo
;nfi.NumberDecimalDigits = 0
textBox1.Text = Int64.Parse(textBox1.Text, NumberStyles.AllowThousands).ToString
;(N",nfi")
;(textBox1.Select(textBox1.Text.Length, 0
البته اول باید System.Globalization رو به برنامت اضافه کنی
ممنون از جوابتون خیلی کمکم کرد ولی من هنوز مشکل دارم:
1. من می خواهم در حین نوشتن تغییرات ایجاد بشه ولی این کاری که شما گفتید بعد از نوشتن کل اعداد و زدن یک کلید ایجاد می شود.
2. در کدام رویداد باید این تکه برنامه را بنویسم.
سلام
جوابتون عالی بود من ابتدا اشتباهاً در رویداد click برنامه را نوشتم ولی بعد با جابجایی قطعه برنامه در رویداد text-change به جواب رسیدم.
فقط یه سوال و اون اینکه منظور از "N" چیست؟
"N" یعنی اینکه به فرمت عددی تبدیل بشه میتونی برای اینکه اطلاعاتی در این رابطه به دست بیاری تو Help خود vs جستجو کنی دنبال NumberFormatInfo Class باش
یه سرچ تو سایت بکن تو اون تایپک که من جواب گرفتم یه چند تا لینک بود که میتونی ازش استفاده کنی
سلام.
من می خواستم از این کدی که گذاشتید استفاده کنم ولی روی سطر
()textBox1.Text = Decimal.Parse(textBox1.Text, NumberStyles.AllowThousands).ToString
خطای
Input string was not in a correct format. می گیره. چکار کنم؟
من فکر می کنم می خواستی عدد اعشاری وارد کنی و وقتی ممیز میزدی این خطا رو بهت میداده این کد فقط برای اعداد صحیح قابل استفاده است .
در ضمن اگر ممیز نمیزدی و فقط عدد وارد می کردی نباید بهت خطا بده ولی اون طوری که تو نوشتی اعداد رو سه رقم سه رقم جدا نمیکنه چون توی تابع ToString فرمت تبدیلت رو مشخص نکردی
فرمت تبدیل را مشخص کردم. دقیقا همانطور که iranrose63 نوشته (N",nfi") ولی اینجا ننوشتم. در ضمن خطا را موقع debug کردن می گیره .
با سلام
من یه تکس باکس دارم که مبلغ پرداختی رو کاربر درون او وارد می کنه
من می خوام زمانی که کاربر در حال وارد کردن مقدار است به صورت اتومات هر سه رقمی که کاربر وارد کد یه ، قرار بده.
چطور میشه این کار را انجام داد
توجه(زمانی که کاربر Back Space زد باید ، ها جا به جا شوند)
12،411،254
بعد از زدن Back Space
1،241،125
در رویداد مربوط به text change مربوط به تکست باکس این کد را بنویس
private void textBox1_TextChanged(object sender, EventArgs e)
{
decimal Number;
if (decimal.TryParse(textBox1.Text, out Number))
{
textBox1.Text = string.Format("{0:N0}", Number);
textBox1.SelectionStart = textBox1.Text.Length;
}
}
در صورت جستجو به این موارد بر میخوردی
https://barnamenevis.org/showth...A7%DA%A9%D8%B3
https://barnamenevis.org/showth...A7%DA%A9%D8%B3
https://barnamenevis.org/showth...A7%DA%A9%D8%B3
https://barnamenevis.org/showthread.php?t=75685
سلام
چطوری می تونیم اعدادی رو که در text box وارد می کنیم سه رقم سه رقم جدا کنیم؟
سلام
از متد Substring در کلاس
string می توتنی استفاده کنی.
Substring(x, y)
x= نقطه شروع
y=نقطه پایان
راستی ورودی باید
string باشه.
باسپاس.
اگر منظورت در نحوه نمایش است کافیه که بهش FormatString بدی. البته می تونی یک کلاس جدید ایجاد کنی که از TextBox به ارث بره و سپس توی اون این رفتار رو اضافه کنی:
txtNumber.Text = string.Format("{0:n}",2500000);
اینم مثالی برای همین موضوع
توی اون مثالی که برات گذاشتم یک Property به نام Value وجود داره که مقدار رو بر می گردونه می تونی از اون استفاده کنی.
بازم مرسی
حالا کسی می دونه تو DataGridView چطوری باید سه رقم سه رقم عدد ها رو جدا کنیم
با سلام میخواستم بدونم چطور میشه تو یه textbox کاربر یه مقدار پولی وارد کنه و سیستم خودش سه رقم سه رقم این اعداد رو از هم جدا کنه که کاربر اشتباه این مقادیر رو وارد نکنه
سلام
این نیز در این سایت مطرح شده بود !
همین سه رقم سه رقم رو سرچ کن !
سلام
پیداش نکردم میشه بیشتر توضیح بدین
من برای یک برنامه نیاز به TextBoxی برای کار کردن با مقادیر پول دارم
یعنی بعد از وارد شده عدد درون آن، سه تا سه تا جدا کرده و ریال را به انتهای آن اضافه کند.
تا اینجاشو مشکلی ندارم (غیر از اینکه ریال رو سمت راست عدد میگذاره و سمت چپش نمی گذاره)
مشکل من در برگردوندن مقدار داخل TextBox برای ذخیره کردن داخل دیتابیس است.
(اول روش حلقه و کار با رشته برای اضافه کردن و حذف علامات و ریال به ذهنم رسید جواب میده ولی خوشم نیومد جالب نیست )
از چه روشی میتونم برای برگردوندن عدد درون TextBox استفاده کنم.
این هم کدی که استفاده میکنم:
private void txtBxPrice_Leave(object sender, EventArgs e)
{
TextBox txtBxTest = sender as TextBox;
if (((txtBxTest.Text.IndexOf("ریال") == -1) & (txtBxTest.Text.IndexOf(',') == -1) & (txtBxTest.Text != "")))
{
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.CurrencyDecimalDigits = 0;
nfi.CurrencyGroupSeparator = ",";
nfi.CurrencySymbol = "ریال";
txtBxTest.Text = Int64.Parse(txtBxTest.Text, NumberStyles.AllowThousands|NumberStyles.AllowCurr encySymbol).ToString("C", nfi);
}
}
آخرین ویرایش به وسیله razavi_university : دوشنبه 05 فروردین 1387 در 12:02 عصر
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
من فکر میکنم مشکل شما حذف کردن علامت ریال از مقدار پول برای ذخیره در دیتابیسه، اگه درست متوجه شده باشم، یه نمونه کد اینجا برات گذاشتم که بتونی از راه ساده تری ریال رو حذف کنی :
درسته من توی برداشتن علامت ',' و "ریال" مشکل دارم.
هیچ راه دیگهای نداره که نخوام از کد زیر استفاده کنم.
نمیشه یه جورایی با این کد درستش کرد
this.textBox1.Text.Replace(" ریال", string.Empty);
من هرچی تلاش کردم نشد
Int64.Parse(txtBxTest.Text, NumberStyles.AllowThousands|NumberStyles.AllowCurr encySymbol)
و یا حداقل یه روش دیگه برای اضافه و حذف کردن علامت "ریال" و "," البته به جز حلقه و کار با String
ممنون
آخرین ویرایش به وسیله razavi_university : دوشنبه 05 فروردین 1387 در 18:06 عصر
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
دقیقا هدفت از این کار چیه و چرا نمیخوای از اون کد استفاده کنی ؟
تا اونجایی که ممکنه از کار کردن با String اونم در حلقه، دوری کن، چون این کار سربار زیادی روی حافظه داره.البته به جز حلقه و کار با String
من مقادیر رو با پارامتر به SQL Command اضافه می کنم و بعد . . .
اول میخواستم متد get Text کنترل TextBox رو Override کنم ولی نشد
نمیخوام موقعی که میخوام مقادیر رو به پارامتر ها اضافه کنم کد نویسی زیادی انجام بشه
cmd.Parameters.AddWithValue("@mprice", txtBxPrice.Text);
نه من حلقه رو برای سه تا سه تا کردن اعداد استفاده میکردم و بعد از خروج از حلقه "ریال" رو Insert میکردم برای حذفش هم از همون روشی که خودتون استفاده کردین استفاده کردم.تا اونجایی که ممکنه از کار کردن با String اونم در حلقه، دوری کن، چون این کار سربار زیادی روی حافظه داره.
البته میشه قبل از اینکه تغییرات روی مقادیر داخل TextBox اعمال بشه اون رو داخل یک متغیر دیگه ذخیره کرد و بعد اون متغیر رو داخل دیتابیس ذخیره کرد.( ولی این هم میشه کار اضافه)
تا اینکه اون روشی که در پست اول هست رو استفاده کردم راحت قرار میده ولی برداشتنش ؟؟؟
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
باز اگه منظورت رو متوجه شده باشم، میخوای ریال رو حذف کنی و به آبجکت SqlCommand ات پاس کنی، اونم با حداقل کد نویسی، خب این چطوره :
cmd.Parameters.AddWithValue("@mprice", this.textBox1.Text.Replace(" ریال", string.Empty));
خب با "," ها چه کنم که بین هر سه رقم اضافه شده؟؟
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
public override string Text
{
get
{
return base.Text.Trim().Replace(",", "");
}
set
{
base.Text = value;
}
}
خب چه لزومی داره ما به جای حل مسئله صورت مسئله رو تغییر بدیم
همانطوری که میدونین در نرمافزارهای تحت ویندوز(مثلا مجموعه Office) مقادیر Currency که با اسامی مختلف (Money) نامیده میشوند. واحد پول مکانی که برای ویندوز مشخص شده است (در regional and language option) را به انتهای عدد اضافه می کنند.(داخل خود TextBox)
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی
خب علامت "," هم از همون طریق میتونی حذفش کنی، کدش رو هم egoldashraf در پست 8 برات نوشته.
راهی نداره که بشه از این کد استفاده کرد
Int64.Parse(txtBxTest.Text, NumberStyles.AllowThousands|NumberStyles.AllowCurr encySymbol);
آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
آن لحظه،
لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .
برنولی