SniperCode Sheva
asked on
How to make thousand separator and decimals in textbox in C#
I'd like to input numbers in a textbox and format it with a thousand separator and two decimals.
I've tried the Masked Edit with a lot of different masks, but I just can't get it to work.
I found something interesting but I have a problem when I put some numbers in the textbox, the cursor comes always to the left ...
Here is the code:
Any suggestions ?
Thank you.
I've tried the Masked Edit with a lot of different masks, but I just can't get it to work.
I found something interesting but I have a problem when I put some numbers in the textbox, the cursor comes always to the left ...
Here is the code:
double text = double.Parse(txt.Text);
CultureInfo culture = CultureInfo.CreateSpecificCulture("fr-FR");
txt.Text = text.ToString("N0", culture);
But when I insert in the textbox for example 2500 I got 02 500 while I want 2 500.Any suggestions ?
Thank you.
can you use 3rd party components like Telerik/DevExpress/Infragi stics/... who are doing a much better job to handle this?
You can use the currency format of ToString()
Example:
Fiddle Demo Here
Example:
Fiddle Demo Here
using System;
public class Program
{
public static void Main()
{
decimal myNum = 2500.01m;
string myString = myNum.ToString("C");
Console.WriteLine(myString);
double myDouble = 2500.01;
string myString2 = myDouble.ToString("C");
Console.WriteLine(myString2);
}
}
Or, if you don't want currency and just want the thousands separator with 2 decimal places:
using System;
using System.Globalization;
public class Program
{
public static void Main()
{
double myDouble2 = 2500;
string myString3 = myDouble2.ToString("N",new CultureInfo("en-US"));
Console.WriteLine(myString3);
}
}
ASKER
Hello Zephir, I don't know if you understood my question... I need to seperate the thousand with spaces and when I put some numbers in the textbox, the cursor comes always to the left ...
You could separate the thousands with spaces by doing a string replace, and replace the comma with a space.
From my last example above, just do:
To control where the cursor is positioned in the textbox, you will need client side code (i.e. JavaScript / jQuery), not C#.
From my last example above, just do:
var myStringWithSpaces = myString3.Replace(",", " ");
To control where the cursor is positioned in the textbox, you will need client side code (i.e. JavaScript / jQuery), not C#.
ASKER
Is it possible to put Jquery code in C# ?
No. C# is server side code that runs before the page renders. jQuery is client side code that runs after the server side code is done. And positioning a cursor requires that the page is loaded, which means it must be done in client side code.
ASKER
So, there is no a solution ? because when I insert in my textbox 2500 I got 02 500 and if I continue to insert the numbers will be added after the 2 like "22 500"
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I have to mention that I am using textbox !
I'm confused when you say you want the cursor positioned in the left of the textbox. That suggests to me that you're talking about the textbox once it's rendered on the client side, and that would require JavaScript or jQuery to position the cursor. You can not position a cursor from C# because the HTML and cursor don't exist at that point.
If you're talking about assigning your string to a textbox from C#, that's possible. Just do:
TextBox1.Text = myStringWithSpaces2;
If you're talking about assigning your string to a textbox from C#, that's possible. Just do:
TextBox1.Text = myStringWithSpaces2;
ASKER
I don't want to put the cursor in the left side... But when I insert in the textbox the cursor automatically go in the left side and I put this code on the key press event...
If you're using key press event, you really should use jQuery for this. Otherwise, you're making the user wait for a page lifecycle with every key press.
Here's an example with jQuery:
HTML
jQuery
Example usage: enter 123456 into the textbox, and then click over to the side.
Result: 123 456 00
Here is a Fiddle Demo.
If that doesn't do it for you, then I'm sorry, but I don't understand what you're trying to accomplish so I'll leave it to someone else to answer.
Here's an example with jQuery:
HTML
<input type="text" id="myTextBox">
<span style="cursor: pointer;">Click here when done</span>
jQuery
$('#myTextBox').blur(function() {
var val = parseFloat($(this).val()).toLocaleString(undefined, {
minimumFractionDigits: 2
});
var newVal = val.replace(",", " ").replace(".", " ")
$(this).val(newVal);
});
Example usage: enter 123456 into the textbox, and then click over to the side.
Result: 123 456 00
Here is a Fiddle Demo.
If that doesn't do it for you, then I'm sorry, but I don't understand what you're trying to accomplish so I'll leave it to someone else to answer.