PDA

View Full Version : حرفه ای: نمایش پولی عدد و ...



teymoorei
دوشنبه 30 آبان 1401, 11:33 صبح
سلام

من یه تکست باکس دارم که هزینه رو میگیره و مدل دریافت پول هم به شکل سه رقم سه رقم هست (1,270,000) .

حالا مشکل اینجاس که میخوام ( , ) فقط نمایشی باشه یعنی اینکه بتون موقع ذخیره اون رو ذخیره نکنم و موقع نمایش از پایگاه داده باز نمایش داده بشه و این که این مقدار رو میخوام با مبالغ دیگه هم جمع و تفریق کنم .

امیدوارم منظورمو رسونده باشم

باتشکر

336699
دوشنبه 30 آبان 1401, 12:13 عصر
سلام

فرض میکنیم یک تکست باکس داریم، در KeyPress تکست باکس تعیین میکنیم که فقط اعداد رو دریافت بکنه



Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
If Not Char.IsNumber(e.KeyChar) AndAlso Not Char.IsControl(e.KeyChar) Then
e.Handled = True
End If
End Sub

ادامه دارد...

SajjadKhati
دوشنبه 30 آبان 1401, 12:16 عصر
سلام
توی سی شارپ و پایگاه داده ، بصورت عدد ذخیره کنید . اما فقط موقع نمایش به کاربر ، بصورت سه رقم ، سه رقم ، جداگانه نمایش بدید .

336699
دوشنبه 30 آبان 1401, 12:19 عصر
با استفاده از این دو فانکشن می توانیم عدد را به استرینگ تبدیل کنیم و همچین استرینگ را به عدد.

Imports System.Globalization

Private Function StringToDecimal(InputText As String) As Decimal
Dim OutputNumber As Decimal
Try
Dim style As NumberStyles = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands
Dim provider As CultureInfo = New CultureInfo("en-US")
OutputNumber = Decimal.Parse(InputText, style, provider)
Catch ex As Exception
End Try
Return OutputNumber
End Function

Private Function DecimalToString(InputNumber As Decimal) As String
Dim OutputText As String = Nothing
Try
Dim nfi As NumberFormatInfo = New CultureInfo("en-US", False).NumberFormat
nfi.NumberDecimalDigits = BitConverter.GetBytes(Decimal.GetBits(InputNumber) (3))(2)
OutputText = InputNumber.ToString("N", nfi)
Catch ex As Exception
End Try
Return OutputText
End Function

ادامه دارد...

336699
دوشنبه 30 آبان 1401, 12:23 عصر
سپس در TextChanged تکست باکس این کد را مینویسیم

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Dim InputText As String = TextBox1.Text
If Not String.IsNullOrWhiteSpace(InputText) Then
Dim DecimalNumber As Decimal = StringToDecimal(InputText)
Dim OutputNumber As String = DecimalToString(DecimalNumber)
TextBox1.Text = OutputNumber
TextBox1.SelectionStart = TextBox1.TextLength
End If
End Sub

در نتیجه وقتی کاربر عدد را در تکست باکس وارد میکند
بصورت لحظه ای عدد مربوطه بصورت سه رقم سه رقم نمایش داده میشود.

ادامه دارد...

ROSTAM2
دوشنبه 30 آبان 1401, 12:26 عصر
سلام.

برای نمایش عدد بصورت جداشده با کاما از تابع FormatNumbr استفاده می شود.

154237 (https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/formatnumber-function)

است.

این هم نمونه هاش:
Examples:


Expression
Result


FormatNumber(1.23456, 2)
1.23


FormatNumber(0.123456, 2, TriState.False)
.12


FormatNumber(0.123456, 2, TriState.True)
0.12


FormatNumber(-12345.12, , TriState.False)
-12,345.12


FormatNumber(-12345.12, , TriState.True)
(12,345.12)


FormatNumber(-12345.12, , TriState.True, TriState.False)
(12345.12)





http://www.vb-helper.com/howto_net_format_number.html


154239 (http://www.vb-helper.com/HowTo/howto_net_format_number.zip)

و برای نمایش عدد موقع تاپش به اونصورت بهترا از رویداد TextChanged استفاده کنی.

ادامه ندارد.

336699
دوشنبه 30 آبان 1401, 12:28 عصر
در زمان ذخیره در دیتابیس هم کافی است مقداری که در تکست باکس است و بصورت سه رقم سه رقم نمایش داده میشود

را با استفاده از فانکشن StringToDecimal به عدد تبدیل کنید و در دیتابیس ذخیره نمایید.

teymoorei
سه شنبه 01 آذر 1401, 01:04 صبح
سلام ممنونم از لطف دوستان

اما من یکم گیج شدم

اول اینکه میخوام اعداد فارسی باشه

دوم یه عدد مثلا 222,22 رو چطور میتونم بعلاوه 2 بکنم

همچنین چطور 222,22 رو به شکل 22222 در دیتابیس ذخیره کنم اما موقع نمایش 222,22 باشه

اگه ممکنه یکم واضح تر بگید یا یه نمونه کد بذارید

ممنون

ROSTAM2
سه شنبه 01 آذر 1401, 09:19 صبح
پست شماره 4:


336699


کاربر دائمیتاریخ عضویتخرداد 1391محل زندگیایرانپست337


نقل قول: نمایش پولی عدد و ...


با استفاده از این دو فانکشن می توانیم عدد را به استرینگ تبدیل کنیم و همچین استرینگ را به عدد.


Imports System.Globalization


Private Function StringToDecimal(InputText As String) As Decimal
Dim OutputNumber As Decimal
Try
Dim style As NumberStyles = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands
Dim provider As CultureInfo = New CultureInfo("en-US")
OutputNumber = Decimal.Parse(InputText, style, provider)
Catch ex As Exception
End Try
Return OutputNumber
End Function




گرچه فکر کنم راه ساده تری هم برای اینکار باشه.

teymoorei
جمعه 04 آذر 1401, 11:34 صبح
سلام
مشکل من به شکل دیگری حل شد که توی یه نمونه برنامه کوچک میذارم برای دوستان

دانلود (https://uploadkon.ir/uploads/c1ef25_22Separator.zip)

336699
جمعه 04 آذر 1401, 19:27 عصر
سلام
مشکل من به شکل دیگری حل شد که توی یه نمونه برنامه کوچک میذارم برای دوستان

دانلود (https://uploadkon.ir/uploads/c1ef25_22Separator.zip)

مشکل کد شما اینجاست که اگر کاربر در تنظیمات سیستم، نحوه نمایش اعداد رو تغییر داده باشه

کد شما دیگر سه رقم سه رقم اعداد رو جدا نمیکنه.

154271

شما باید در کد مشخص کنید که میخواهید نحوه نمایش با سیستم امریکایی باشه و تنظیمات سیستم کاربر هم روی نحوه نمایش اعمال نشود.

Dim nfi As NumberFormatInfo = New CultureInfo("en-US", False).NumberFormat

teymoorei
جمعه 04 آذر 1401, 20:39 عصر
خوب اگه خواستم فارسی تایپ بشه تکلیف چیه ؟

336699
جمعه 04 آذر 1401, 20:54 عصر
خوب اگه خواستم فارسی تایپ بشه تکلیف چیه ؟

شما یک فونتی رو انتخاب کن که اعداد را فارسی نمایش بدهد.

teymoorei
جمعه 04 آذر 1401, 21:39 عصر
اینو کجا باید بنویسم ؟

Dim nfi As NumberFormatInfo = New CultureInfo("en-US", False).NumberFormat

336699
جمعه 04 آذر 1401, 21:57 عصر
اینو کجا باید بنویسم ؟

Dim nfi As NumberFormatInfo = New CultureInfo("en-US", False).NumberFormat

اگر به بالای همین صفحه اسکرول کنید
نمونه کد و سورس کد موجود است

teymoorei
جمعه 04 آذر 1401, 22:21 عصر
توی کدها ی خودم که نمونه برنامه رو گذاشتم کجا بذارمش ؟

336699
جمعه 04 آذر 1401, 23:29 عصر
توی کدها ی خودم که نمونه برنامه رو گذاشتم کجا بذارمش ؟

اگر قرار باشه برنامه درست کار بکنه

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

teymoorei
جمعه 04 آذر 1401, 23:35 عصر
اگر قرار باشه برنامه درست کار بکنه

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

ممنونم بررسی کردم