[英]Using another language in a textbox in C# winform
我知道这是这里和其他博客中讨论最多的话题,但是没有一种技术可以帮助我。
我想在文本框中输入“ 马拉雅拉姆语 ” 。 到目前为止,我已经做到了。 我已经安装了字体'AnjaliOldLipi' 。 我可以在记事本中输入马拉雅拉姆语。 但是我在Winform应用程序中不能做同样的事情。 它在文本框中显示为英语。
我尝试了以下代码,但没有结果。
private void richTextBox_test_Leave(object sender, EventArgs e)
{
System.Globalization.CultureInfo TypeOfLanguage = new
System.Globalization.CultureInfo("en-us");
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(TypeOfLanguage);
}
private void richTextBox_test_Enter(object sender, EventArgs e)
{
MessageBox.Show("textbox ebntereed");
System.Globalization.CultureInfo TypeOfLanguage = new System.Globalization.CultureInfo("ms-MY");
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(TypeOfLanguage);
richTextBox_test.Font = new Font("AnjaliOldLipi", 12);
}
然后,我尝试了以下代码。 现在,当我输入文本框时,默认键盘正在更改(我可以在任务栏上看到它)。 仍然在键入时,文本仍以英语显示。 我需要按“ Ctrl + Shift”来写“马拉雅拉姆语”。 我不知道为什么,但是我需要在不按任何键盘按钮的情况下用“ malayalam”编写。
在成功的程序中,简单就是一切,无需复杂性,省去更多艰巨的工作,然后尝试以下操作:
using System;
using System.Windows.Forms;
using System.Globalization;
namespace TestingTextBoxAutoLangSwitch
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// Switching to Arabic Jordan
private void textBox2_Enter_1(object sender, EventArgs e)
{
Application.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("ar-jo"));
}
// Switching back to English USA
private void textBox2_Leave(object sender, EventArgs e)
{
Application.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("en-us"));
}
}
}
.NET应用程序是unicode。 转到控制面板的区域和语言选项,然后将默认输入语言更改为马来语。 您的应用应遵循。 (这也假定输入数据的存储也是Unicode)。
如果您想即时执行此操作:
System.Globalization.CultureInfo maylay = new System.Globalization.CultureInfo("ms");
System.Threading.Thread.CurrentThread.CurrentCulture = malay;
若要输入马拉雅拉姆语,有一些现成的键盘免费提供。 我使用了键盘“ Malayalam Indic Input 2”。 它对我来说很完美。 还听说另一个键盘“ Varamozhi”具有很多功能。 其他一些要点是,当保存到数据库时,您需要将此malayalam保存为unicode。 SQL查询的内容如下:
"Insert into table_1 values (N'"+textBox1.Text+"')";
我的问题的答案如下:
private void textBox1_Enter(object sender, EventArgs e)
{
SetKeyboardLayout(GetInputLanguageByName("mal"));
}
private void textBox1_Leave(object sender, EventArgs e)
{
SetKeyboardLayout(GetInputLanguageByName("eng"));
}
public static InputLanguage GetInputLanguageByName(string inputName)
{
foreach (InputLanguage lang in InputLanguage.InstalledInputLanguages)
{
if (lang.Culture.EnglishName.ToLower().StartsWith(inputName))
return lang;
}
return null;
}
public void SetKeyboardLayout(InputLanguage layout)
{
InputLanguage.CurrentInputLanguage = layout;
}
我使用以下代码:首先,您必须找到想要的文化语言的名称。 方法“ GetInutLanguageByName”将返回您请求的语言。然后,您将检查是否安装了请求的语言,如果是,则返回请求的语言。 然后很容易地更改输入语言...
private static InputLanguage GetInutLanguageByName(string layOut)
{
foreach (InputLanguage lng in InputLanguage.InstalledInputLanguages)
{
if (lng.Culture.DisplayName == layOut)
{
return lng;
}
}
return null;
}
private void SetKeyboardLayout(InputLanguage Layout)
{
InputLanguage.CurrentInputLanguage = Layout;
}
private void FirstNameTextBox_Enter(object sender, EventArgs e)
{
SetKeyboardLayout(GetInutLanguageByName("Persian"));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.