обнаружить неанглийские форматы - PullRequest
0 голосов
/ 01 февраля 2012

Я работаю с приложением winform, и в richbox_textchange я хотел бы определить, является ли введенный текст английским или нет, потому что, если это английский, я буду выполнять ввод влево-вправо, в противном случае - ввод вправо-вправо.

Iиспользовал этот код:

    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
        if (CultureInfo.CurrentCulture.TextInfo.IsRightToLeft)
        {
            label1.Text = "RTL";
        }
        else
        {
            label1.Text = "LTR";
        }
    }

но я всегда получаю: только LTR, label1 никогда не изменяет текст на RTL, даже если я набрал арабский язык !!!

РЕДАКТИРОВАТЬ: ОТВЕТИТЬ !!

Во-первых, спасибо всем, кто помог мне здесь, и особенно Одеду, вот решение, которое я мог бы найти

    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
        if (InputLanguage.CurrentInputLanguage.Culture.TextInfo.IsRightToLeft)
        {
            label1.Text = "RTL";
        }
        else
        {
            label1.Text = "LTR";
        }
    }

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

Вам необходимо добавить правильное пространство имен в начало вашего класса:

using System.Globalization;

На этом этапе классы CultureInfo и TextInfo будут доступны напрямую.


Обновление:

Похоже, вы пытаетесь выяснить текущий язык ввода .Взгляните на класс InputLanguage и его методы.Он находится в пространстве имен System.Windows.Forms.

InputLanguage.CurrentInputLanguage.Culture.TextInfo.IsRightToLeft
1 голос
/ 01 февраля 2012

Проблема в том, что CultureInfo.CurrentCulture.TextInfo.IsRightToLeft возвращает информацию о текущей настройке system , а не о конкретном тексте, который был введен в текстовое поле.

Понятия не имеет, если вынабрал английский, или арабский, или кириллицу в текстовое поле, и это не волнует.Все, что его волнует, - это то, что ваш компьютер настроен для отображения, поэтому он никогда не меняется.

К сожалению, я не верю, что возможно получить язык конкретной строки текста.Вы могли бы везти со свойством Text.EncodingInfo.CodePage , но вряд ли что-то скажет вам язык текста с абсолютной уверенностью.Другой возможный подход - это перебирать символы в строке, проверяя их на предмет информации.Нечто подобное описано здесь .

Учитывая все обстоятельства, лучше просто спросить пользователя.Что другие приложения поддерживают несколько языков ввода?

...