2012-01-31 9 views
0

私はwinformアプリケーションを使っています。そして、richbox_textchangeでは、入力されたテキストが英語かどうかを検出したいと思います。英語の場合、LeftToRight typing else RightToLeft typingを実行します。英語以外の形式を検出する

私は、そのコードを使用:

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

をしかし、私はいつも得る:LTRは、LABEL1は、私はアラビア入力した場合でも、RTLにテキストを変更することはありません!

EDIT:ANSWERED !!

まずここで、特にオデッド私を助けるために皆のおかげで、ここで私はあなたがあなたのクラスの先頭に正しい名前空間を追加する必要が

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

Xenophobia;を使用していますが、すべての米国版でデフォルトで有効にする必要があります。 ;-) –

+0

アラビア語はRTL言語です。 – Oded

+0

@Oded、申し訳ありませんが、私はRTLとLTRの間に間違って配置されていましたが、RTLではなく常にLTRを取得します –

答えて

2

を把握できるソリューションです:

using System.Globalization; 

CultureInfoTextInfoのクラスは、直接利用できます。


更新:

あなたが現在入力言語を見つけるためにしようとしていることが表示されます。 InputLanguageクラスとそのメソッドを見てください。これはSystem.Windows.Forms名前空間にあります。

InputLanguage.CurrentInputLanguage.Culture.TextInfo.IsRightToLeft 
+0

実際には、それはうまくいきませんでした.Okay CultureInfoとTextInfoの両方が見つかりましたが、CultureInfo.TextInfoは使用できません。IsRightToLeft、彼らは同じ行に収まらない –

+0

@ R.Vector - 私はそれがどういう意味か分かりません。 – Oded

+0

それはさておきました:CultureInfo.CurrentCulture.TextInfo.IsRightToLeft –

1

問題はCultureInfo.CurrentCulture.TextInfo.IsRightToLeftは現在システムの設定ではなく、テキストボックスに入力された特定のテキストについての情報を返しているということです。

テキストボックスに英語、アラビア語、またはキリル文字を入力したかどうかはわかりませんが、気にしません。それが気にするのは、あなたのコンピュータが表示するように設定されていることです。そのため、決して変更されません。

残念ながら、特定の文字列の言語を取得することはできません。 にはText.EncodingInfo.CodePage propertyと運があるかもしれませんが、テキストの言語に絶対的な確信を持たせるものはありません。もう一つの可能​​な方法は、文字列内の文字を繰り返して情報をチェックすることです。そのようなものはhereと記載されています。

すべてのことを考慮すれば、ユーザーに尋ねるほうがよいでしょう。複数の入力言語をサポートする他のアプリケーションは何をしていますか?

+0

はい、今すぐ最高の解決策は彼に尋ねることですが、私はこれを動的にしたいだけです。 –

+1

[InputLanguge'](http://msdn.microsoft.com/en-us/) /library/system.windows.forms.inputlanguage.aspx)クラス。 – Oded

関連する問題