PDA

View Full Version : Text Box For Currency



ramin_280
شنبه 26 شهریور 1390, 02:35 صبح
با سلام خدمت دوستان.
يك مشكل براي من اتفاق افتاده كه اگر كسي كمكم كند ممنون ميشوم.
در يك برنامه نياز دارم در يك تكست باكس قيمت يك شيي وارد شود بطوري كه اعداد سه رقم سه رقم از هم با يك كما جداشوند دقيقا هنگام وارد كردن اعداد پشت سرهم.مثلا اگر عدد130راوارد كرديدبعدازوارد كردن عددچهارم مثلا5 در تكست باكس بصورت1.305يعني بتواند هزارگان ويكان را از هم جدا كند واگر مثلا بلافاصله عددآخررابا كليدBackSpaceحذف كرديد دوباره آن كما در تكست باكس حذف شود وعدد130به نمايش در بيايد اما نكته مهم اينجاست كه كما ها نبايد در خروجي تكست باكس وجود داشته باشندچون محاسبه روي حروف باعث خطاميشود.درضمن درنگوييدبروم ازmasked textاستفاده كنم چون نتيجه مثال بالارا بصورت130.5نشان ميدهد كه درست نيست چون بعد ورود عدد 5 عدديك هزارگان ميشود.
با تشكر.

arash020
شنبه 26 شهریور 1390, 05:16 صبح
سلام دوست من
به نظر من چاره این مساله میتونه تابع Mid باشه.
کاری که میتونی بکنی اینه که توی رویداد Changeاز کنترل Textbox مورد نظر
ابتدا یک بکاپ از مقدار واقعی اون رو توی یه متغیر Public نگه داری
بعد
با استفاده از یک جلقه و دستور mid سه تا سه تا حروف رو جدا کنی و با "," & کنی .
و نتیجه رو بریزی توی همون textbox

به همین راحتی
موفق باشی
باز هم اگه سوالی داشتی بپرس ...

ramin_280
دوشنبه 28 شهریور 1390, 21:56 عصر
تورویداد changeکه فکرنکنم بشه نوشت چون بعد که ","رااضافه میکنی دوباره رویدادchange اجرامیشه و زنجیره وار ادامه پیدامیکنه بهتره توKeypressیاkeyupباشه.
حالا فکر کن عدد1000راوارد کردی وتابع تبدیلش کرد به1,000حالا کلیدbackspaceرا زدیم بعد چی میشه؟تکلیف ","چی میشه؟ میشه یه کد مثال بزنید؟ ممنون میشم.

minaforotan
دوشنبه 28 شهریور 1390, 23:17 عصر
من که از این کد استفاده میکنم تو رویداد textchange تکس مربوطه این کدا رو بنویس

Dim Value As Long
Try
Value = Long.Parse(TextBox1.Text, System.Globalization.NumberStyles.Any)
TextBox1.Text = String.Format("{0:N0}", CLng(Value))
Catch ex As Exception
End Try

siamakbyt
سه شنبه 29 شهریور 1390, 10:57 صبح
البته به نظر من هم متد Format بهتره کاراییش دقیقا همینه
از MSDN میتونی نمونه هاشو بگیری

y.saied
پنج شنبه 01 فروردین 1392, 22:52 عصر
سلام
میشه یه نمونه با تابع Format بذارین؟

hamzeh2009
پنج شنبه 02 خرداد 1392, 20:48 عصر
فقط تشکر یادتون نره:لبخندساده:
Private Sub txtBack_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtBack.TextChanged
txtBack.Text = Format(Val(txtBack.Text.Trim.Replace(",", "")), "#,0")
txtBack.SelectionStart = txtBack.TextLength
End Sub

shahryari
جمعه 03 خرداد 1392, 12:37 عصر
سلام
این هم یک روش برای جداکردن سه رقم در تکست باکس
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
TextBox2.Text = FormatNumber(TextBox2.Text, 0, TriState.True)
TextBox2.Select(TextBox2.TextLength, TextBox2.TextLength)
End Sub

میلاد علوی
جمعه 03 خرداد 1392, 16:39 عصر
Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
CursorPosTextBox = (Len(TextBox1.Text) - TextBox1.SelectionStart)
TextBox1.Text = FormatNumber(TextBox1.Text, 0, TriState.True)
TextBox1.SelectionStart = Len(TextBox1.Text) - CursorPosTextBox

End Sub

100 % مشکل هم حل شده

h_a_m_i_d
جمعه 03 خرداد 1392, 18:55 عصر
با سلام دوستان عزیز اگه سورس کامل یک textbox خوب رو میخواید تو این لینک گذاشتم برید دانلود کنید همه چیزهایی هم که بیشتر داره رو توضیح دادم همه اینکارا رو میکنه اپن سورس هم هست :بامزه:
http://barnamenevis.org/showthread.php?370307-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%B3%D9%88%D8%B1%D8%B3-%DA%86%D9%86%D8%AF-%D8%AA%D8%A7-%D9%BE%D8%B1%D9%88%DA%98%D9%87