2013-08-04 48 views
4

我知道這是一個在這裏和其他博客中討論得非常多的話題,但沒有一種技術可以幫助我。在C#winform的文本框中使用另一種語言

我要輸入馬拉雅拉姆語文本框中。我迄今爲止做到了這一點。我已經安裝了一個字體'AnjaliOldLipi'。我可以在記事本中輸入Malayalam。但是我不能在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'來寫'馬拉雅拉姆語'。我不知道爲什麼,但我需要在不用鍵盤按鈕的情況下寫入'馬拉雅拉姆語'。

+0

我有也試過設置InputLanguage.CurrentInputLanguage = Malayalam; – Foreever

+1

我知道您的計算機(鍵盤)的區域設置已設置爲英語(每次按一個鍵都會顯示一個西方字符)。如果是這種情況,顯示你想要的角色的最佳選擇是「即時替換」。也就是說,與richTextBox TextChanged事件相關聯的函數將使用所需字符替換每個輸入字符(例如,存儲在字典中)。 – varocarbas

+0

@varocarbas我喜歡你的想法,但我認爲這個想法很難實現像馬拉雅拉姆這樣的語言。 – Foreever

回答

0

對於馬來亞打字,也有一些現成的鍵盤可以免費。我使用了鍵盤'馬拉雅拉姆印度輸入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; 
    } 
0

.NET應用程序是unicode。轉到您的控制面板,區域和語言選項,並將默認輸入語言更改爲馬來語。應用程序應該遵循。 (這假定輸入數據的存儲也是Unicode)。

如果你想這樣做對飛:

System.Globalization.CultureInfo maylay = new System.Globalization.CultureInfo("ms"); 
System.Threading.Thread.CurrentThread.CurrentCulture = malay; 
+0

我試過你的代碼。但結果相同。在文本框英文文本,但在記事本馬拉雅拉姆語。 – Foreever

0

我使用這些代碼: 首先你必須找到文化語言的名稱你想。 方法「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")); 

    } 
1

簡單是成功的計劃一切,不需要複雜性,節省您的精力用於更苛刻的東西,試試這個:

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")); 
     } 
    } 
} 
+0

謝謝,這對我有用 – Negar

相關問題