Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
2 / 2 / 0
Регистрация: 11.10.2013
Сообщений: 24

Смена кодировки в TextBox

02.09.2019, 16:21. Показов 4916. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В TextBox считывается с помощью сканера штрих-кодов последовательность символов, типа:

00000046173881b>tvU?DAB8AyxLD

Далее из нее извлекаются некие параметры.
При этом, когда ввод идет при раскладке 'EN', то все ок, но если у пользователя включена раскладка 'RU', то код вводится как:

00000046173881иЮемГ,ВФИ8ФнчДВ

и тогда, при дальнейшей обработке кода, возникают ошибки.

Вопрос: Как получать в итоге в string значение независимо от включенной раскладки?

Конвертировать после завершения ввода? Ловить коды кириллицы в событии KeyPress ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2019, 16:21
Ответы с готовыми решениями:

Смена кодировки
Здравствуйте. Я получаю в файл xml (естественно, кодировка utf-8), оттуда, спарсив значение, пихаю его в переменную и (там оно написано...

Смена значений textbox и radiobutton
Доброго времени суток лучшим специалистам сишарпа! Не могу понять почему не переключаются значения при нажатии кнопки "Следующий...

Смена цвета границы textBox
Здравствуйте! Как изменить цвет границы textBox, в случае если туда вводятся не те значения? То есть: в textBox вводятся только цифры,...

10
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
02.09.2019, 16:27
Цитата Сообщение от zen2s Посмотреть сообщение
В TextBox считывается с помощью сканера штрих-кодов последовательность символов, типа:
В текст боксе нужно только отображать.
Т.е. считали в переменную, а за тем только в GUI отображаем. И будет все ок.


Цитата Сообщение от zen2s Посмотреть сообщение
При этом, когда ввод идет при раскладке 'EN', то все ок, но если у пользователя включена раскладка 'RU', то код вводится как:
00000046173881иЮемГ,ВФИ8ФнчДВ
а вот это ваще не понятно. Какая разница сканеру какая раскладка???
0
2 / 2 / 0
Регистрация: 11.10.2013
Сообщений: 24
02.09.2019, 16:38  [ТС]
Цитата Сообщение от Sanya_sa Посмотреть сообщение
а вот это ваще не понятно. Какая разница сканеру какая раскладка???
Сканер имеет интерфейс "В разрыв клавиатуры", т.е. эмулирует нажатия клавиш. И вот да, я ожидал, что в коде закодированы символы, а получается, что коды и они зависят от выбранной раскладки...
А TextBox для ввода нужен, чтобы в случае, если штрих-код нечитаем, оператор мог ввести его вручную...
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
02.09.2019, 16:47
Цитата Сообщение от zen2s Посмотреть сообщение
Сканер имеет интерфейс "В разрыв клавиатуры", т.е. эмулирует нажатия клавиш.
Проще систему настроит так что бы раскладка была всегда английская)))

А так просто подменять коды символов в строке. Те я так понимаю у Вас событие нажатия клавищи обрабатывается? Или какойто глобальный хук используется? Да в принципе не важно просто подменят коды и все. Таблицу ASCII по первой ссылке найдете в любом поисковике.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18243 / 14157 / 5366
Регистрация: 17.03.2014
Сообщений: 28,847
Записей в блоге: 1
02.09.2019, 20:51
zen2s, я бы заменял русские на английские на лету. В событиии KeyPress.
0
2 / 2 / 0
Регистрация: 11.10.2013
Сообщений: 24
02.09.2019, 21:00  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
zen2s, я бы заменял русские на английские на лету. В событиии KeyPress.
Ну, видимо, так и буду делать.
Спасибо.
0
1524 / 513 / 126
Регистрация: 09.01.2018
Сообщений: 1,563
02.09.2019, 22:46
Лучший ответ Сообщение было отмечено zen2s как решение

Решение

zen2s, Я бы поменял раскладку по какому то подходящему событию, перед сканированием.
Пример ниже, меняет любую из установленных раскладок на En (при условии, что такой метод ввода установлен, разумеется).
Я повесил его на кнопку, ну а вы можете применить его где вам удобнее.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private void Button1_Click(object sender, EventArgs e)
        {
            var english = InputLanguage.FromCulture(CultureInfo.CreateSpecificCulture("en-US"));
            var currentLang = InputLanguage.CurrentInputLanguage;
 
            if (currentLang != english)
            {
                var installedLanguages = InputLanguage.InstalledInputLanguages;
                if (installedLanguages.Contains(english))
                {
                    InputLanguage.CurrentInputLanguage = english;
                }
                else
                {
                    MessageBox.Show("English input is not installed");
                }
            }
            
        }
1
2 / 2 / 0
Регистрация: 11.10.2013
Сообщений: 24
02.09.2019, 23:05  [ТС]
Цитата Сообщение от escoult Посмотреть сообщение
zen2s, Я бы поменял раскладку по какому то подходящему событию, перед сканированием.
Да, это тоже неплохой вариант, поменять на 'EN', а затем восстановить текущую, попробую, спасибо.
0
2 / 2 / 0
Регистрация: 11.10.2013
Сообщений: 24
05.09.2019, 15:38  [ТС]
Цитата Сообщение от escoult Посмотреть сообщение
zen2s, Я бы поменял раскладку по какому то подходящему событию, перед сканированием.
Реализовал по Вашему методу. Все работает, спасибо.
Но есть один нюанс, следующее условие из Вашего примера у меня всегда true:
C#
1
if (currentLang != english)
Даже такое условие всегда true:
C#
1
2
3
4
5
InputLanguage currentLang = InputLanguage.CurrentInputLanguage;
if (InputLanguage.CurrentInputLanguage != currentLang) 
{ 
    MessageBox.Show("Different !!!"); 
}
Можно проигнорировать, конечно, но хотелось бы разобраться.
Это только у меня так?

P.S.: Visual Studio 2013
1
1524 / 513 / 126
Регистрация: 09.01.2018
Сообщений: 1,563
05.09.2019, 15:56
Цитата Сообщение от zen2s Посмотреть сообщение
но хотелось бы разобраться.
Да, верно, спасибо за замечание.
Дело в операторе `!=' (и `==`, разумеется)
Этот оператор считает объекты `english` и `currentLang` разными. Поскольку ссылки указывают на разные объекты.
Поэтому для проверки на равенство нужно использовать Equals:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            var english = InputLanguage.FromCulture(CultureInfo.CreateSpecificCulture("en-US"));
            var currentLang = InputLanguage.CurrentInputLanguage;
 
            if (!currentLang.Equals(english))
            {
                var installedLanguages = InputLanguage.InstalledInputLanguages;
                if (installedLanguages.Contains(english))
                {
                    InputLanguage.CurrentInputLanguage = english;
                }
                else
                {
                    MessageBox.Show("English input is not installed");
                }
            }
Так все работает верно.
1
2 / 2 / 0
Регистрация: 11.10.2013
Сообщений: 24
05.09.2019, 16:20  [ТС]
Цитата Сообщение от escoult Посмотреть сообщение
Так все работает верно.
Да, теперь все работает как часики.
Премного благодарен !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.09.2019, 16:20
Помогаю со студенческими работами здесь

Смена кодировки
Всем привет! Заранее спасибо! У меня на мой взгляд простейший вопрос, на который я не смог найти ответ в интернете. У меня есть...

Смена кодировки
Нужно получить из Тестовое письмо это - Тестовое РїРёСЃСЊРјРѕ Как это сделать?

Смена кодировки
У меня выгрузка документа происходит так: File.WriteAllText(@"C:\Выгрузка\name.csv", csv.ToString(), Encoding.Unicode); Проблема в том,...

Смена кодировки без использования Encoding
Задание: Выполнить перекодирование исходного текста без использования системных или других библиотек или функций, с использованием...

Смена кодировки без потери смысла
Здравствуйте. Столкнулся с банальной задачей но решение сам не нашёл. Как сменить кодировку символов в строке с Win-1251 на UTF-8 и при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru