6

これがここや他のブログでよく議論されているトピックであることは知っていますが、どのテクニックも役に立ちません.

テキスト ボックスにマラヤーラム語を入力したいと考えています。ここまでやった。フォント'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」を押す必要があります。理由はわかりませんが、キーボードのボタンを一切押さずに「マラヤラム」で書く必要があります。

4

4 に答える 4

2

Simplicity is everything in successful program, no need for complexity, save your effort for more demanding things, and try this:

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"));
        }
    }
}
于 2015-11-28T18:32:11.640 に答える
1

私はこれらのコードを使用します: まず、必要な文化言語の名前を見つけなければなりません。メソッド「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"));

    }
于 2014-12-17T08:12:11.250 に答える