2014-01-31 1 views
0

У меня есть это приложение, которое требует, чтобы пользователь вводил некоторые цены и т. д., работая с dataGridViews также для отображения. Проблема в том, что на некоторых компьютерах '.' это обрабатывается как ',' Мне удалось получить какое-то событие TextBox leave и установить для него инвариантную культуру, но бесполезно, поскольку im использует dataGridViews для отображения, а также ReportViewer. У меня также есть код, который преобразует числа к тексту и с этой проблемой моего приложение бесполезно в текущем состоянии с этой проблемой культуры, поэтому мне нужно, чтобы установить все инвариантную культуру независимо от того, что он будет принимать значение, например:Set Culture Invariant для всего приложения (поток) Point '.' вместо ','

2.00 в 200,00 на этом компьютер я хочу использовать инвариантную культуру независимо от того, что только отображать 2.00, работая с '.' вместо ','.

+1

Вы не устанавливаете все в инвариантную культуру, вы устанавливаете инвариантную культуру, а затем используете ее там, где это необходимо. Где-то вы собираетесь или из строки и предполагаете культуру, когда вы должны установить инвариант в приложении и использовать его при этом. Если у вас есть FxCop, вы можете включить правила глобализации, и он будет отслеживать весь проблемный код для вас. Обычные подозреваемые являются Parse, TryParse, Convert, ToString и String.Format. –

+0

Как я уже сказал, мне нужно также использовать в dataGridView для отображения '.' вместо «,» – user3144640

+0

Не о том, что вам нужно, о том, что нужно пользователю, и им нужно вводить и видеть данные в своей культуре, а не в том, что вы пытаетесь правильно написать программное обеспечение. –

ответ

1

Я бы не рекомендовал принудительно применять приложение к инварианту культуры или к определенной культуре. Но вот что вы хотите ... проверьте ответ this Вопрос.

Если вы хотите изменить только datagridview, измените значение DefaultCellStyle.FormatProvider, чтобы использовать культуру вашей страны. В приведенном ниже примере меняют FormatProvider на использование англо-американской культуры.

Column.DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("en-US") 
+0

Для этого конкретного приложения мне нужна эта инвариантная культура, и он будет использоваться только в моей стране, и если я этого не сделаю, все приложение бесполезно – user3144640

+0

@ user3144640 - добавьте запись в пользовательский документ или заметки о выпуске, попросите пользователей переключить культуры страны. Это зависит от вас .. ссылка, приведенная в ответе, может быть полезна. – Junaith

+0

хотя бы сказать мне, как сделать dataGridView использовать '.' вместо «,», чтобы распознать изменение культуры или что бы это ни могло ответить на мой вопрос, у меня есть 2 столбца, отображающих десятичные знаки, поэтому foreach (строка DataGridViewRow в dataGridView1.Rows) { } – user3144640

0

Вы можете попробовать следующее, прежде чем что-то еще:

CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator = "."; 

Однако я бы рекомендовал различать взаимодействия с пользователем и пусть это происходит в культуре по умолчанию.

+0

Для этого конкретного приложения мне нужна только эта инвариантная культура, она будет использоваться только в моей стране, и если я этого не сделаю, все приложение бесполезно – user3144640

+0

Вы сказали сами * на определенных компьютеры *. Приложение работает на компьютерах с разными языковыми настройками.Сделайте их похожими = проблема решит, -OR- сделайте правильное приложение, где я (как пользователь) могу использовать цифровую клавиатуру для ввода десятичной точки. – Sinatr

+0

Как сделать их похожими У меня нет доступа к пользовательскому приложению, и я хочу принудительно это не хочу. – user3144640

Смежные вопросы