PDA

View Full Version : سه رقم ، سه رقم جدا کردن اعداد از هم



mohammad2407
یک شنبه 18 فروردین 1392, 04:30 صبح
دوستان من از کد زیر برای سه رقم سه رقم جدا کردن عداد استفاده میکنم ولی متاسفانه خوب کار نمیکنه و مشکل زیاد داره!


//Remove previous formatting, or the decimal check will fail
string value = textBox1.Text.Replace(",", "").Replace("$", "");
decimal ul;
//Check we are indeed handling a number
if (decimal.TryParse(value, out ul))
{
//Unsub the event so we don't enter a loop
textBox1.TextChanged -= textBox1_TextChanged;
//Format the text as currency
textBox1.Text = string.Format(CultureInfo.CreateSpecificCulture("fa-ir"), "{0:C2}", ul);
textBox1.TextChanged += textBox1_TextChanged;

omidamiry
یک شنبه 18 فروردین 1392, 10:25 صبح
سلام

شما فقط باید عدد رو زمانی به شکل string نمایش میدی دستور بنویسی



int i=250000;
textbox.text=i.tostring("#,#");


خطای نوشتاری رو خودت بگیر

aminaltavista
یک شنبه 18 فروردین 1392, 14:42 عصر
دوست عزیز دوات پیش خودمه:


txt.Text = string.Format("{0:n0}", double.Parse(txt.Text.Replace(",", "")));
txt.Select(txt.TextLength, 0);

txt نام تکست باکسته. فقط تو رویداد Text_Changes بنویس . یادت باشه شرطی بزار که جز عدد نشه چیز دیگه ای وارد کنی وگرنه ازت خطا میگیره!
موفق باشی.

mohammad2407
یک شنبه 18 فروردین 1392, 14:55 عصر
کد شما خیلی خوبه و واقعا هم جدا میکنه

ولی چرا وقتی تکس باکس پاک میکنیم خطا میده و از برنامه خارج میشه

مثلا داخل تکس باکس نوشتم 125000 بعد متوجه شدم که اشتباه هست پاکش که میکنم از برنامه خارج میشه و از کد ایراد میگیره

mohammad2407
یک شنبه 18 فروردین 1392, 15:12 عصر
با یک شرط OK شد

دوستان از کد زیر استفاده کنن


if(textBox1.Text!=string.Empty)
{
textBox1.Text = string.Format("{0:N0}", double.Parse(textBox1.Text.Replace(",", "")));
textBox1.Select(textBox1.TextLength, 0);
}

danialafshari
یک شنبه 18 فروردین 1392, 15:17 عصر
فقط کافی بود فقط قبل از ایجاد تاپیک جستجو کنید
http://barnamenevis.org/showthread.php?362372-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AC%D8%AF%D8%A7%DA%A9%D9%8

mohammad2407
یک شنبه 18 فروردین 1392, 16:40 عصر
اگه شما بیای این کد رو تو رویداد textbox_changed بنویسی دیگه شرط نمیخواد ، در ضمن کار کاربر هم راحت تر میشه

شما بدون شرط تست کردیت ؟

اگر بدون شرط باشه خطا میده

میتونید تست کنید

amir200h
سه شنبه 20 فروردین 1392, 13:03 عصر
در رویداد text change کد زیر را بنویسید

if (textBox2.Text == "" || textBox2.Text == "0") return;
decimal price;
price = decimal.Parse(textBox2.Text, System.Globalization.NumberStyles.Currency);
textBox2.Text = price.ToString("#,#");
textBox2.SelectionStart = textBox2.Text.Length;

mohammad2407
شنبه 24 فروردین 1392, 05:31 صبح
دوستان من میخوام عدد فقط برای دیدن کاربر سه رقم سه رقم جدا بشه ولی میخوام در دیتا بیس به صورت واقعی ثبت بشه

به چه صورت . مثلا کاربر تایپ کرده 12,000

ولی میخوام در دیتا بیس به صورت 12000 ثبت بشه

الان یه جایی از برنامم باید مقدار یک تکس باکس ضرب کنم در یک عددی علامت , در انجام عملیات تداخل ایجاد میکنه

m.lajevardi
شنبه 24 فروردین 1392, 09:07 صبح
باید با متد replace کاراکتر ',' را حذف کنی.
[/SIZE][/B]
با Trim(); بهتره

Mahmoud.Afrad
شنبه 24 فروردین 1392, 11:10 صبح
با Trim(); بهتره
چطور میتوانید کاراکتر ',' (یا هر کاراکتر دیگه ای) را که بین کاراکترهای دیگر هست را با trim حذف کنید؟!

m.lajevardi
شنبه 24 فروردین 1392, 11:35 صبح
چطور میتوانید کاراکتر ',' (یا هر کاراکتر دیگه ای) را که بین کاراکترهای دیگر هست را با trim حذف کنید؟!
اشتباه از سمت من بود
حتما باید از Replace استفاده کرد:خجالت:

amir200h
شنبه 24 فروردین 1392, 13:14 عصر
بفرما دوست من.
با روش های ساده تری هم میشد به جواب رسید.

Mahmoud.Afrad
شنبه 24 فروردین 1392, 14:00 عصر
بفرما دوست من.
با روش های ساده تری هم میشد به جواب رسید.
یعنی فکر میکنید split کردن و چسبوندن رشته برای حذف کاراکتر راحت تر از استفاده از متد Replace هست؟!

amir200h
شنبه 24 فروردین 1392, 15:56 عصر
نه منظورم این بود از این راهی که من رفتم راه های آسون تری هم هست.
ولی بنتظر خودم راهی که خودم رفتم بهتره :D

mohammad2407
شنبه 24 فروردین 1392, 22:07 عصر
اقا محمود من آمدم در رویداد TextChanged تکس باکس کد زیر نوشتم


if(Price.Text!=string.Empty)
{
Price.Text = string.Format("{0:N0}", double.Parse(Price.Text.Replace(",", "")));
Price.Select(Price.TextLength, 0);
}


خیلی هم خوب عمل میکنه.

و بعد برای ذخیره کد زیر نوشتم


tb.Price = Price.Text = Text.Replace(",", string.Empty).Trim();
db.anbars.InsertOnSubmit(tb);
db.SubmitChanges();



برنامه هم در حالت عادی هیچ مشکلی نداره ولی وقتی برای ذخیره روی دکمه کلیک میکنم از برنامه خارج میشه و کد زیر نمایش میده یعنی رویداد TextChanged


if(Price.Text!=string.Empty)
{
Price.Text = string.Format("{0:N0}", double.Parse(Price.Text.Replace(",", "")));
Price.Select(Price.TextLength, 0);
}


اقا محمود ممنون میشم منو راهنمایی کنید

mohammad2407
یک شنبه 25 فروردین 1392, 00:30 صبح
اقا محمود مشکل در ثبت حل شد ولی در ویرایش یک مشکل هست

من با کد زیر عملیات ویرایش انجام میدم

db.SubmitChanges();

حالا برای کد بالا چطوری باید این کارو انجام داد؟

FastCode
یک شنبه 25 فروردین 1392, 19:54 عصر
اگر راجع به l10n و i18n چیزی بدونید فقط از ...N0 N1 N2 استفاده میکنید
از اطلاعات موجود در System.Globalization.CultureInfo.CurrentCulture.Nu mberFormat برای حذف کاراکتر های اضافه استفاده کنید

mohammad2407
یک شنبه 25 فروردین 1392, 20:29 عصر
شئ db را در سطح کلاس تعریف کردم به صورت زیر


anbardariDataContext db;

public FrmEdit()
{
InitializeComponent();

db = new anbardariDataContext();
}




کد سرچ که با اون رکورد مورد نظر جستجو میکنم و بعد در تکس باکس ها میریزم


string srch = txtserch.Text;
codetype.DataBindings.Clear();
namberfani.DataBindings.Clear();
kalaname.DataBindings.Clear();
addres.DataBindings.Clear();
vazeyat.DataBindings.Clear();
barcode.DataBindings.Clear();

var result = db.anbars.Where(c => c.namberfani.Contains(srch) || c.barcode.Contains(srch)).FirstOrDefault();
if (result != null)
{
groupBox2.Enabled = true;
codetype.DataBindings.Add("Text", result, "codetype");
namberfani.DataBindings.Add("Text", result, "namberfani");
kalaname.DataBindings.Add("Text", result, "kalaname");
addres.DataBindings.Add("Text", result, "addres");
vazeyat.DataBindings.Add("Text", result, "vazeyat");
barcode.DataBindings.Add("Text", result, "barcode");
}
else
{
codetype.ResetText();
namberfani.ResetText();
kalaname.ResetText();
addres.ResetText();
vazeyat.ResetText();
barcode.ResetText();

groupBox2.Enabled = false;
PMessageBox.Show("کالای مورد نظر شما در انبار موجود نیست.");
}





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

db.SubmitChanges();

Mahmoud.Afrad
یک شنبه 25 فروردین 1392, 21:57 عصر
مشکل در ثبت حل شد ولی در ویرایش یک مشکل هست
چرا نمیگید چه خطایی یا مشکلی پیش میاد!!

mohammad2407
یک شنبه 25 فروردین 1392, 22:47 عصر
مشکل در ثبت اطلاعات جدید حل شد چون نوع کد نویسی در اون قسمت فرق میکنه

ولی در قسمت ویرایش کلا نمیدونم باید چطوری کد زیر قرار بدم

Price.Text = Text.Replace(",", string.Empty).Trim();

مشکل من این هست

Mahmoud.Afrad
دوشنبه 26 فروردین 1392, 00:35 صبح
من امتحان کردم بدون ',' ذخیره کرد. نیازی نیست که replace کنید، خودش عدد رو بدون ',' ذخیره میکنه. پس همین کدی که برای ادیت کذاشتی کافیه.

mohammad2407
دوشنبه 26 فروردین 1392, 02:26 صبح
نه اقا محمود میزنه چون در در رویداد TextChanged تکس باکس کد زیر نوشتم


if(Price.Text!=string.Empty)
{
Price.Text = string.Format("{0:N0}", double.Parse(Price.Text.Replace(",", "")));
Price.Select(Price.TextLength, 0);
}

Mahmoud.Afrad
دوشنبه 26 فروردین 1392, 03:24 صبح
بله در تکست باکس به صورت جدا شده نشون میده ولی بدون علامت ذخیره میکنه.
اگر خطایی میده بگو وگرنه که هیچ.

mohammad2407
دوشنبه 26 فروردین 1392, 03:27 صبح
خب اقا محمود وقتی داخل تکس باکس نوشته 12,500 خب به همین صورت هم ذخیره میشه مثل الان

ما باید موقع ذخیره علامت , پاک کنیم

Mahmoud.Afrad
دوشنبه 26 فروردین 1392, 06:26 صبح
نه دیگه! اگر نوع ستون رو در جدولت از انواع عددی انتخاب کنی موقع ثبت عدد بدون "," رو ذخیره میکنه.

sinayas
سه شنبه 27 فروردین 1392, 14:35 عصر
سلام به دوستان

برای نمایش از همون کد بالا استفاده کنید
if (txtPrice.Text != string.Empty)
{
txtPrice.Text = string.Format("{0:N0}", double.Parse(txtPrice.Text.Replace(",", "")));
txtPrice.Select(txtPrice.TextLength, 0);
}

و برای استفاده از این کد .
مثلا برای ثبت یا ویرایش در بانک اول این کد رو بزارید و بعد بقیه کارها رو انجام بدین
string Price = txtPrice.Text.Replace(",", "").Trim();

mohammad2407
سه شنبه 27 فروردین 1392, 21:28 عصر
اقا محمود من نوع فیلد در دیتا بیس bigint قرار دادم و توسط کد زیر string یعنی همون متن تکس باکس تبدیل کردم ولی از کد زیر ایراد میگیره ؟


string pricei=Price.Text=Price.Text.Replace(",",string.Empty);
int pricee=Convert.ToInt64(pricei);


یعنی از قسمت :

Convert.ToInt64(pricei);

ولی وقتی تغییر میدم به ToInt32 همه چی درست میشه ولی مگه big int معال int 64 نیست ؟

Mahmoud.Afrad
سه شنبه 27 فروردین 1392, 21:59 عصر
قیمت رو از نوع decimal انتخاب کنید.
جواب سوال هم اینه که بایست متغیر رو هم Int64 بگیرید:

Int64 pricee = Convert.ToInt64(pricei);

علی فتحی
شنبه 03 خرداد 1393, 16:58 عصر
خدا اجرش دهد این دیگه یک نومنه تکمیل و بی نقص

http://uplod.ir/ayk97o755h31/CurrencyTextBox.zip.htm

علی فتحی
چهارشنبه 07 خرداد 1393, 22:14 عصر
کسی جواب نداد ایا بدرد کسی خورد

sabzehbzsa
پنج شنبه 08 خرداد 1393, 16:16 عصر
اگر نخوایم توی textchange این کار انجام بشه باید چه کار کنیم.مثلا موقع ثبت توی دیتابیس به صورت سه رقم سه رقم ثبت شه

miillad
یک شنبه 02 اسفند 1394, 01:43 صبح
درود
دوستان برای خوانا کردن اعداد طولانی در textbox به نظرم اگه بشه به صورت 3 رقمی جداشون کرد،عالی میشه.
حالا یا با کاراکتر (,) با با کاراکتر خالی( )
چطوری میشه نحوه کدنویسیش؟
تشکر

golestan1
یک شنبه 02 اسفند 1394, 02:08 صبح
if (!string.IsNullOrEmpty(textBox1.Text))
{
textBox1.Text = string.Format("{0:n0}", double.Parse(textBox1.Text.Replace(",", "")));
textBox1.Select(textBox1.Text.Length, 0);
}

miillad
یک شنبه 02 اسفند 1394, 04:58 صبح
با تشکر از شما دوست عزیز.
عالی بود:تشویق:
من 7 تا تکست باکس خروجی دارم و 3 تا ورودی.واسه هر 7 تکست باکس این دستورات رو نوشتم جواب داد.میخوام بدونم نمیشه جوری نوشت که هر 7 تا تکست باکس با این برنامه ویرایش بشه؟ بدون اینکه برای هر تکست باکس بصورت مجزا اینا رو نوشت؟
و یه سوال دیگه اینکه موقعی که کاربر عدد وارد میکنه در ورودی چطوری میشه اونجا هم تفکیک کرد اعداد رو؟
باز هم ممنون

vB.N3T
یک شنبه 02 اسفند 1394, 07:31 صبح
و یه سوال دیگه اینکه موقعی که کاربر عدد وارد میکنه در ورودی چطوری میشه اونجا هم تفکیک کرد اعداد رو؟

شما باید این کد ها رو در رویداد TextChanged بنویسید

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

utility.MyTextBoxes(this, "Clear");

کدها کلاس

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;
using System.Data.SqlClient;

public class utility
{

public static void MyTextBoxes(Control container, string CommandName)
{

foreach (Control c in container.Controls)
{
MyTextBoxes(c, CommandName);

if (c is TextBox)
{
switch (CommandName)
{
case "Clear":
c.Text = "";
break;
case "ReadOnly":
((TextBox)c).ReadOnly = true;
break;
}

}
}
}
}

miillad
یک شنبه 02 اسفند 1394, 07:52 صبح
با تشکر از شما
مشکل اینه من سی شارپ کلا بلد نیستم.ولی بیسیک و اسمبلی و سی پلاس تا حدودی بلدم.منظورم اینه از چارت نرم افزاری سر درمیارم.
این برنامه ای که نوشتم یه ماشین حساب تخصصی هست در زمینه کار خودم.
یه جلسه اموزش رو از جایی دیدم و برنامه رو نوشتم.مشکل اینه بقیه اموزشها نیست.و منم فعلا وقت ندارم کل سی شارپ رو یاد بگیرم.
برنامه درسته و کارمیکنه منتها دارم ویرایشش میکنم واسه راحتی کار.
اون کدی که گفتین تو تکست چنج بزارم همون کد اولی هست؟ اون رو گذاشتم ارور داد.فکر کنم اون کد مربوط به برنامه اجرایی باشه.

vB.N3T
یک شنبه 02 اسفند 1394, 09:05 صبح
با تشکر از شما
مشکل اینه من سی شارپ کلا بلد نیستم.ولی بیسیک و اسمبلی و سی پلاس تا حدودی بلدم.منظورم اینه از چارت نرم افزاری سر درمیارم.
این برنامه ای که نوشتم یه ماشین حساب تخصصی هست در زمینه کار خودم.
یه جلسه اموزش رو از جایی دیدم و برنامه رو نوشتم.مشکل اینه بقیه اموزشها نیست.و منم فعلا وقت ندارم کل سی شارپ رو یاد بگیرم.
برنامه درسته و کارمیکنه منتها دارم ویرایشش میکنم واسه راحتی کار.
اون کدی که گفتین تو تکست چنج بزارم همون کد اولی هست؟ اون رو گذاشتم ارور داد.فکر کنم اون کد مربوط به برنامه اجرایی باشه.

private void txtmony_TextChanged_1(object sender, EventArgs e)
{
if (txtmony.Text == string.Empty)
{
return;
}
else
{
txtmony.Text = string.Format("{0:0,00}", double.Parse(txtmony.Text));
txtmony.Select(txtmony.Text.Length, 0);
}
}
ب جای txtmony اسم تکس باکس خودتون بزارین

miillad
یک شنبه 02 اسفند 1394, 10:08 صبح
با تشکر از شما دوست من بابت زحمتی که کشیدین
الان درست شد با این برنامه شما.و ورودی تفکیک میشه.منتها 2 تا مشکل داره:
یکی اینکه اول که تو تکس باکس میخوام عدد بزنم به محض ورود اولین عدد 2 تا عدد صفر هم سمت چپش میاد
مثلا من میزیم 1 اون مینویسه 001 و با وارد کردن اعداد دیگه اونا جایگزین این صفرها میشن
مثلا میزنم 1و2و3 میشه 001و012و123
مشکل دیگه این هست که من از دستور try استفاده کردم تو برنامه تا اگه کامل 3 تا وردوی پر نشد برنامه اجرا نشه و خطا بده.
و الان وقتی تو تکست باکس تایپ میکنم مدام همون خطا رو میده

miillad
چهارشنبه 05 اسفند 1394, 11:27 صبح
دوستان با این کد درست شد.

if (!string.IsNullOrEmpty(textBox10.Text))
{
textBox10.Text = string.Format("{0:n0}", double.Parse(textBox10.Text.Replace(",", "")));
textBox10.Select(textBox10.Text.Length, 0);
}

حالا اگه بخام به جای (,) از فضای خالی ( ) استفاده کنم چی بنویسم؟
مثلا الان عدد 2500000 رو مینویسه 2,500,000
حالا میخوام بنویسه 000 500 2