Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测非英语格式_C#_Text_Globalization_Right To Left - Fatal编程技术网

C# 检测非英语格式

C# 检测非英语格式,c#,text,globalization,right-to-left,C#,Text,Globalization,Right To Left,我正在使用winform应用程序,在richbox\u textchange中,我想检测输入的文本是否为英语,因为如果是英语,我将执行LeftToRight键入,或者RightToLeft键入 我使用了这个代码: private void richTextBox1_TextChanged(object sender, EventArgs e) { if (CultureInfo.CurrentCulture.TextInfo.IsRightToLeft)

我正在使用winform应用程序,在richbox\u textchange中,我想检测输入的文本是否为英语,因为如果是英语,我将执行LeftToRight键入,或者RightToLeft键入

我使用了这个代码:

    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
        if (CultureInfo.CurrentCulture.TextInfo.IsRightToLeft)
        {
            label1.Text = "RTL";
        }
        else
        {
            label1.Text = "LTR";
        }
    }
但我总是得到:仅限LTR,label1永远不会将文本更改为RTL,即使我键入阿拉伯语

编辑:回答

首先感谢大家在这里对我的帮助,特别是Oded,这是我能想出的解决办法

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

您需要将正确的命名空间添加到类的顶部:

using System.Globalization;
此时,
CultureInfo
TextInfo
类将直接可用


更新:

您似乎正在试图找出当前的输入语言。看看这个类及其方法。它位于
System.Windows.Forms
命名空间中

InputLanguage.CurrentInputLanguage.Culture.TextInfo.IsRightToLeft

您需要将正确的命名空间添加到类的顶部:

using System.Globalization;
此时,
CultureInfo
TextInfo
类将直接可用


更新:

您似乎正在试图找出当前的输入语言。看看这个类及其方法。它位于
System.Windows.Forms
命名空间中

InputLanguage.CurrentInputLanguage.Culture.TextInfo.IsRightToLeft

问题在于
CultureInfo.CurrentCulture.TextInfo.IsRightToLeft
返回的是有关当前系统设置的信息,而不是在文本框中键入的特定文本

它不知道你是否在文本框中输入了英语、阿拉伯语或西里尔语,它也不在乎。它所关心的只是你的计算机被配置为显示什么,这就是为什么它从不改变

不幸的是,我认为不可能获得特定文本字符串的语言。你可能会有一些运气,但不太可能有任何东西能绝对肯定地告诉你文本的语言。另一种可能的方法是迭代字符串中的字符,检查它们的信息。类似这样的描述


从各方面考虑,最好只询问用户。其他支持多种输入语言的应用程序做了什么

问题在于
CultureInfo.CurrentCulture.TextInfo.IsRightToLeft
返回的是有关当前系统设置的信息,而不是在文本框中键入的特定文本

它不知道你是否在文本框中输入了英语、阿拉伯语或西里尔语,它也不在乎。它所关心的只是你的计算机被配置为显示什么,这就是为什么它从不改变

不幸的是,我认为不可能获得特定文本字符串的语言。你可能会有一些运气,但不太可能有任何东西能绝对肯定地告诉你文本的语言。另一种可能的方法是迭代字符串中的字符,检查它们的信息。类似这样的描述



从各方面考虑,最好只询问用户。其他支持多种输入语言的应用程序做了什么

实际上它不起作用,好吧,我找到了Cultureinfo和TextInfo,但我不能使用Cultureinfo.TextInfo.IsRightToLeft,他们不适合同一个地方line@R.Vector-我不知道那是什么意思。好的,它是:CultureInfo.CurrentCulture.TextInfo。IsRightToLeft@R.Vector-这到底有什么问题?如果没有导入正确的命名空间,那么代码一开始就不会编译,对吗?实际上它不起作用,好的,我找到了Cultureinfo和TextInfo,但我不能使用Cultureinfo.TextInfo.IsRightToLeft,它们不适合同一个环境line@R.Vector-我不知道那是什么意思。好的,它是:CultureInfo.CurrentCulture.TextInfo。IsRightToLeft@R.Vector-这到底有什么问题?如果没有导入正确的命名空间,那么代码一开始就不会编译了,对吗?您正在寻找使用仇外心理的
,但默认情况下,在所有美国版本上都应启用它。;-)@Oded,对不起,我错放在RTL和LTR之间了,我总是得到LTR而不是RTL。你怎么换成阿拉伯语?您是否更改了
CurrentThread.CurrentCulture
CurrentThread.CurrentUICulture
keyboard@R.Vector-更新答案。你在寻找输入语言,而不是当前的系统文化,但默认情况下,在所有美国版本上都应启用它。;-)@Oded,对不起,我错放在RTL和LTR之间了,我总是得到LTR而不是RTL。你怎么换成阿拉伯语?您是否更改了
CurrentThread.CurrentCulture
CurrentThread.CurrentUICulture
keyboard@R.Vector-更新答案。您正在寻找输入语言,而不是当前的系统文化。是的,现在最好的解决方案是询问他,但我只希望这是dynamicI发现的类。是的,现在最好的解决方案是询问他,但我只希望这是dynamicI发现的类。