我发现一些用C#编写的代码用于以编程方式更改输入语言。我改编了vb.net的代码。但它没有用。由于我是编程新手,我无法找出我的错。请帮我。提前致谢。
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports System.Drawing
Namespace InputLanguagetrial
Public Class Form1
Dim _bengaliInput As InputLanguage
Dim _englishInput As InputLanguage
Public Sub New()
_bengaliInput = GetInputLanguageByName("bengali")
_englishInput = GetInputLanguageByName("english")
End Sub
Public Sub SetKeyboardLayout(ByVal layout As InputLanguage)
InputLanguage.CurrentInputLanguage = layout
End Sub
Public Shared Function GetInputLanguageByName(ByVal inputName As String) As InputLanguage
Dim lang As InputLanguage
For Each lang In InputLanguage.InstalledInputLanguages
If lang.Culture.EnglishName.ToLower().StartsWith(inputName) Then
Return lang
End If
Next
Return Nothing
End Function
Public Sub LoadBengaliKeyboardLayout()
If Not _bengaliInput Is Nothing Then
InputLanguage.CurrentInputLanguage = _bengaliInput
Else
InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage
End If
End Sub
Public Sub LoadEnglishKeyboardLayout()
If Not _englishInput Is Nothing Then
InputLanguage.CurrentInputLanguage = _englishInput
Else
InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage
End If
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
InputLanguage.CurrentInputLanguage = _bengaliInput
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
InputLanguage.CurrentInputLanguage = _englishInput
End Sub
End Class
End Namespace
答案 0 :(得分:2)
在C#和VB.Net之间转换某些代码时,可能需要进行一些更改
New
子广告并将其代码添加到“Form_Load
”活动中。TextBox_TextChanged
”事件更改为“TextBox_GotFocus
”会为您提供更好的结果(一旦光标移动到TextBox,语言就会改变)。<强>这里:强>
Public Class Form1
Dim _bengaliInput As InputLanguage
Dim _englishInput As InputLanguage
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
_bengaliInput = GetInputLanguageByName("bengali")
_englishInput = GetInputLanguageByName("english")
End Sub
Public Sub SetKeyboardLayout(ByVal layout As InputLanguage)
InputLanguage.CurrentInputLanguage = layout
End Sub
Public Shared Function GetInputLanguageByName(ByVal inputName As String) As InputLanguage
Dim lang As InputLanguage
For Each lang In InputLanguage.InstalledInputLanguages
If lang.Culture.EnglishName.ToLower().StartsWith(inputName) Then
Return lang
End If
Next
Return Nothing
End Function
Public Sub LoadBengaliKeyboardLayout()
If Not _bengaliInput Is Nothing Then
InputLanguage.CurrentInputLanguage = _bengaliInput
Else
InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage
End If
End Sub
Public Sub LoadEnglishKeyboardLayout()
If Not _englishInput Is Nothing Then
InputLanguage.CurrentInputLanguage = _englishInput
Else
InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage
End If
End Sub
Private Sub TextBox1_GotFocus(sender As Object, e As System.EventArgs) Handles TextBox1.GotFocus
InputLanguage.CurrentInputLanguage = _bengaliInput
End Sub
Private Sub TextBox2_GotFocus(sender As Object, e As System.EventArgs) Handles TextBox2.GotFocus
InputLanguage.CurrentInputLanguage = _englishInput
End Sub
End Class
希望有所帮助:)
修改强>
当然,您需要在Windows设置中添加孟加拉语键盘才能使此代码正常工作:
答案 1 :(得分:0)
如果在操作系统(Windows)中必须拖曳输入语言,则必须将其作为默认语言。例如,如果您将英语输入语言作为默认输入语言并将阿拉伯语输入语言作为第二输入语言。
您可以通过以下代码使用F1,F2键在拖车输入语言之间进行切换:
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.F1 Then
' for English language
InputLanguage.CurrentInputLanguage =nputLanguage.InstalledInputLanguages(0)
elseif e.KeyCode= Keys.F2 Then
' for Arabic language
InputLanguage.CurrentInputLanguage =nputLanguage.InstalledInputLanguages(1)
End If
End Sub