Консольное приложение не может автоматически, программно переключать раскладку клавиатуры.
Приложение Windows Forms так же не может автоматически, программно переключать раскладку клавиатуры. Повторяю, автоматически! Что бы приложению переключить не автоматически, а с помощью, например, нажатия кнопки, нужно подключить функцию WINAPI, такую как ActivateKeyboardLayout().
Только приложение WPF, с помощью класса InputLanguageManager может автоматически, программно переключить раскладку клавиатуры.
В данном примере, приложение показывает культуру и регион по умолчанию.
Приложение Windows Forms так же не может автоматически, программно переключать раскладку клавиатуры. Повторяю, автоматически! Что бы приложению переключить не автоматически, а с помощью, например, нажатия кнопки, нужно подключить функцию WINAPI, такую как ActivateKeyboardLayout().
Только приложение WPF, с помощью класса InputLanguageManager может автоматически, программно переключить раскладку клавиатуры.
В данном примере, приложение показывает культуру и регион по умолчанию.
Раскладку клавиатуры по умолчанию.
Дальше, пользователь попадает в поле "Раскладка клавиатуры русская", поле ввода становится активным, приложение автоматически изменяет раскладку клавиатуры на русскую.
А если пользователь попадает в поле "Раскладка клавиатуры английская", поле ввода становится активным, приложение автоматически изменяет раскладку клавиатуры на английскую.
Изменение раскладки клавиатуры можно увидеть в системном трее и в поле ввода "Раскладка клавиатуры текущая".
Создайте WPF приложение и назовите его WpfLoadLanguage. Замените код. Скомпилируйте и запустите на выполнение.
А если пользователь попадает в поле "Раскладка клавиатуры английская", поле ввода становится активным, приложение автоматически изменяет раскладку клавиатуры на английскую.
Изменение раскладки клавиатуры можно увидеть в системном трее и в поле ввода "Раскладка клавиатуры текущая".
Создайте WPF приложение и назовите его WpfLoadLanguage. Замените код. Скомпилируйте и запустите на выполнение.
MainWindow.xaml
<
Window
x:Class
=
"WpfLoadLanguage.MainWindow"
-
xmlns
=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-
xmlns:x
=
"http://schemas.microsoft.com/winfx/2006/xaml"
-
Title
=
"MainWindow"
-
Height
=
"500"
-
Width
=
"700"
>
-
<
Grid
x:Name
=
"FormMain"
Margin
=
"0,0,0,-2"
RenderTransformOrigin
=
"0.5,0.5"
UseLayoutRounding
=
"False"
Loaded
=
"FormMain_Loaded"
>
-
<!--коллекция рядов-->
-
<
Grid.RowDefinitions
>
-
<
RowDefinition
></
RowDefinition
>
-
<
RowDefinition
></
RowDefinition
>
-
<
RowDefinition
></
RowDefinition
>
-
<
RowDefinition
></
RowDefinition
>
-
<
RowDefinition
></
RowDefinition
>
-
</
Grid.RowDefinitions
>
-
<!--коллекция колонок-->
-
<
Grid.ColumnDefinitions
>
-
<
ColumnDefinition
></
ColumnDefinition
>
-
<
ColumnDefinition
></
ColumnDefinition
>
-
</
Grid.ColumnDefinitions
>
-
<
Label
Name
=
"Label1"
Grid.Row
=
"0"
Grid.Column
=
"0"
Content
=
"Культура и регион по умолчанию"
VerticalAlignment
=
"Center"
Margin
=
"50,0,0,0"
FontSize
=
"14"
FontWeight
=
"Bold"
></
Label
>
-
<
TextBox
Name
=
"TextBox1"
Grid.Row
=
"0"
Grid.Column
=
"1"
Text
=
""
HorizontalAlignment
=
"Center"
VerticalAlignment
=
"Center"
Margin
=
"25,0,0,0"
FontSize
=
"14"
Width
=
"200"
HorizontalContentAlignment
=
"Center"
VerticalContentAlignment
=
"Center"
FontWeight
=
"Bold"
Foreground
=
"Red"
Background
=
"White"
Height
=
"25"
Padding
=
"0,1"
IsReadOnly
=
"True"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
<
Label
x:Name
=
"Label2"
Content
=
"Раскладка клавиатуры по умолчанию"
Margin
=
"50,0,0,0"
Grid.Row
=
"1"
VerticalAlignment
=
"Center"
BorderThickness
=
"0"
FontSize
=
"14"
FontWeight
=
"Bold"
RenderTransformOrigin
=
"0.5,0.5"
Background
=
"Transparent"
></
Label
>
-
<
TextBox
x:Name
=
"TextBox2"
Grid.Column
=
"1"
HorizontalAlignment
=
"Center"
Height
=
"25"
Margin
=
"25,0,0,0"
Grid.Row
=
"1"
TextWrapping
=
"Wrap"
VerticalAlignment
=
"Center"
Width
=
"200"
Foreground
=
"Blue"
FontSize
=
"14"
FontWeight
=
"Bold"
TextAlignment
=
"Center"
Padding
=
"0,1"
IsReadOnly
=
"True"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
<
Label
x:Name
=
"Label3"
Content
=
"Раскладка клавиатуры текущая"
Margin
=
"50,0,0,0"
Grid.Row
=
"2"
VerticalAlignment
=
"Center"
FontWeight
=
"Bold"
FontSize
=
"14"
></
Label
>
-
<
TextBox
x:Name
=
"TextBox3"
Grid.Column
=
"1"
HorizontalAlignment
=
"Center"
Height
=
"25"
Margin
=
"25,0,0,0"
Grid.Row
=
"2"
TextWrapping
=
"Wrap"
VerticalAlignment
=
"Center"
Width
=
"200"
Foreground
=
"Red"
FontWeight
=
"Bold"
FontSize
=
"14"
TextAlignment
=
"Center"
Padding
=
"0,1"
IsReadOnly
=
"True"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
<
Label
x:Name
=
"Label4"
Content
=
"Раскладка клавиатуры русская"
Margin
=
"50,0,0,0"
Grid.Row
=
"3"
VerticalAlignment
=
"Center"
FontWeight
=
"Bold"
FontSize
=
"14"
></
Label
>
-
<
TextBox
x:Name
=
"TextBox4"
Grid.Column
=
"1"
HorizontalAlignment
=
"Center"
Height
=
"25"
Margin
=
"25,0,0,0"
Grid.Row
=
"3"
TextWrapping
=
"Wrap"
VerticalAlignment
=
"Center"
Width
=
"200"
Foreground
=
"Red"
FontSize
=
"14"
Padding
=
"5,1,0,1"
GotFocus
=
"TextBox4_GotFocus"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
<
Label
x:Name
=
"Label5"
Content
=
"Раскладка клавиатуры английская"
Margin
=
"50,0,0,0"
Grid.Row
=
"4"
VerticalAlignment
=
"Center"
FontWeight
=
"Bold"
FontSize
=
"14"
></
Label
>
-
<
TextBox
x:Name
=
"TextBox5"
Grid.Column
=
"1"
HorizontalAlignment
=
"Center"
Height
=
"25"
Margin
=
"25,0,0,0"
Grid.Row
=
"4"
TextWrapping
=
"Wrap"
VerticalAlignment
=
"Center"
Width
=
"200"
Foreground
=
"Blue"
Padding
=
"5,1,0,1"
FontSize
=
"14"
GotFocus
=
"TextBox5_GotFocus"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
</
Grid
>
</
Window
>
<
Window
x:Class
=
"WpfLoadLanguage.MainWindow"
-
xmlns
=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-
xmlns:x
=
"http://schemas.microsoft.com/winfx/2006/xaml"
-
Title
=
"MainWindow"
-
Height
=
"500"
-
Width
=
"700"
>
-
<
Grid
x:Name
=
"FormMain"
Margin
=
"0,0,0,-2"
RenderTransformOrigin
=
"0.5,0.5"
UseLayoutRounding
=
"False"
Loaded
=
"FormMain_Loaded"
>
-
<!--коллекция рядов-->
-
<
Grid.RowDefinitions
>
-
<
RowDefinition
></
RowDefinition
>
-
<
RowDefinition
></
RowDefinition
>
-
<
RowDefinition
></
RowDefinition
>
-
<
RowDefinition
></
RowDefinition
>
-
<
RowDefinition
></
RowDefinition
>
-
</
Grid.RowDefinitions
>
-
<!--коллекция колонок-->
-
<
Grid.ColumnDefinitions
>
-
<
ColumnDefinition
></
ColumnDefinition
>
-
<
ColumnDefinition
></
ColumnDefinition
>
-
</
Grid.ColumnDefinitions
>
-
<
Label
Name
=
"Label1"
Grid.Row
=
"0"
Grid.Column
=
"0"
Content
=
"Культура и регион по умолчанию"
VerticalAlignment
=
"Center"
Margin
=
"50,0,0,0"
FontSize
=
"14"
FontWeight
=
"Bold"
></
Label
>
-
<
TextBox
Name
=
"TextBox1"
Grid.Row
=
"0"
Grid.Column
=
"1"
Text
=
""
HorizontalAlignment
=
"Center"
VerticalAlignment
=
"Center"
Margin
=
"25,0,0,0"
FontSize
=
"14"
Width
=
"200"
HorizontalContentAlignment
=
"Center"
VerticalContentAlignment
=
"Center"
FontWeight
=
"Bold"
Foreground
=
"Red"
Background
=
"White"
Height
=
"25"
Padding
=
"0,1"
IsReadOnly
=
"True"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
<
Label
x:Name
=
"Label2"
Content
=
"Раскладка клавиатуры по умолчанию"
Margin
=
"50,0,0,0"
Grid.Row
=
"1"
VerticalAlignment
=
"Center"
BorderThickness
=
"0"
FontSize
=
"14"
FontWeight
=
"Bold"
RenderTransformOrigin
=
"0.5,0.5"
Background
=
"Transparent"
></
Label
>
-
<
TextBox
x:Name
=
"TextBox2"
Grid.Column
=
"1"
HorizontalAlignment
=
"Center"
Height
=
"25"
Margin
=
"25,0,0,0"
Grid.Row
=
"1"
TextWrapping
=
"Wrap"
VerticalAlignment
=
"Center"
Width
=
"200"
Foreground
=
"Blue"
FontSize
=
"14"
FontWeight
=
"Bold"
TextAlignment
=
"Center"
Padding
=
"0,1"
IsReadOnly
=
"True"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
<
Label
x:Name
=
"Label3"
Content
=
"Раскладка клавиатуры текущая"
Margin
=
"50,0,0,0"
Grid.Row
=
"2"
VerticalAlignment
=
"Center"
FontWeight
=
"Bold"
FontSize
=
"14"
></
Label
>
-
<
TextBox
x:Name
=
"TextBox3"
Grid.Column
=
"1"
HorizontalAlignment
=
"Center"
Height
=
"25"
Margin
=
"25,0,0,0"
Grid.Row
=
"2"
TextWrapping
=
"Wrap"
VerticalAlignment
=
"Center"
Width
=
"200"
Foreground
=
"Red"
FontWeight
=
"Bold"
FontSize
=
"14"
TextAlignment
=
"Center"
Padding
=
"0,1"
IsReadOnly
=
"True"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
<
Label
x:Name
=
"Label4"
Content
=
"Раскладка клавиатуры русская"
Margin
=
"50,0,0,0"
Grid.Row
=
"3"
VerticalAlignment
=
"Center"
FontWeight
=
"Bold"
FontSize
=
"14"
></
Label
>
-
<
TextBox
x:Name
=
"TextBox4"
Grid.Column
=
"1"
HorizontalAlignment
=
"Center"
Height
=
"25"
Margin
=
"25,0,0,0"
Grid.Row
=
"3"
TextWrapping
=
"Wrap"
VerticalAlignment
=
"Center"
Width
=
"200"
Foreground
=
"Red"
FontSize
=
"14"
Padding
=
"5,1,0,1"
GotFocus
=
"TextBox4_GotFocus"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
<
Label
x:Name
=
"Label5"
Content
=
"Раскладка клавиатуры английская"
Margin
=
"50,0,0,0"
Grid.Row
=
"4"
VerticalAlignment
=
"Center"
FontWeight
=
"Bold"
FontSize
=
"14"
></
Label
>
-
<
TextBox
x:Name
=
"TextBox5"
Grid.Column
=
"1"
HorizontalAlignment
=
"Center"
Height
=
"25"
Margin
=
"25,0,0,0"
Grid.Row
=
"4"
TextWrapping
=
"Wrap"
VerticalAlignment
=
"Center"
Width
=
"200"
Foreground
=
"Blue"
Padding
=
"5,1,0,1"
FontSize
=
"14"
GotFocus
=
"TextBox5_GotFocus"
>
-
<
TextBox.Effect
>
-
<
DropShadowEffect
/>
-
</
TextBox.Effect
>
-
</
TextBox
>
-
</
Grid
>
</
Window
>
MainWindow.xaml.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Data;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Imaging;
using
System.Windows.Navigation;
using
System.Windows.Shapes;
//подключить пространство имен
using
System.Globalization;
//добавить ссылку на System.Windows.Forms
//подключить пространство имен
using
System.Windows.Forms;
namespace
WpfLoadLanguage {
-
/// <summary>
-
/// Interaction logic for MainWindow.xaml
-
/// </summary>
-
public
partial
class
MainWindow : Window {
-
public
MainWindow() {
-
InitializeComponent();
-
}
-
private
void
FormMain_Loaded(
object
sender, RoutedEventArgs e) {
-
//культура и регион установленные в системе по умолчанию
-
TextBox1.Text = CultureInfo.InstalledUICulture.ToString();
-
//раскладка клавиатуры по умолчанию
-
TextBox2.Text = InputLanguage.DefaultInputLanguage.Culture.ToString();
-
//для поля ввода TextBox4 устанавливаем раскладку клавиатуры на русскую
-
InputLanguageManager.SetInputLanguage(TextBox4,
new
CultureInfo(
"ru-RU"
));
-
//для поля ввода TextBox5 устанавливаем раскладку клавиатуры на английскую
-
InputLanguageManager.SetInputLanguage(TextBox5,
new
CultureInfo(
"en-US"
));
-
}
-
private
void
TextBox4_GotFocus(
object
sender, RoutedEventArgs e) {
-
/*как только поле ввода TextBox4 станет активным, в поле
-
ввода TextBox3 отобразится текущая раскладка клавиатуры*/
-
TextBox3.Text = InputLanguageManager.Current.CurrentInputLanguage.ToString();
-
}
-
private
void
TextBox5_GotFocus(
object
sender, RoutedEventArgs e) {
-
/*как только поле ввода TextBox5 станет активным, в поле
-
ввода TextBox3 отобразится текущая раскладка клавиатуры*/
-
TextBox3.Text = InputLanguageManager.Current.CurrentInputLanguage.ToString();
-
}
-
}
}
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Data;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Imaging;
using
System.Windows.Navigation;
using
System.Windows.Shapes;
//подключить пространство имен
using
System.Globalization;
//добавить ссылку на System.Windows.Forms
//подключить пространство имен
using
System.Windows.Forms;
namespace
WpfLoadLanguage {
-
/// <summary>
-
/// Interaction logic for MainWindow.xaml
-
/// </summary>
-
public
partial
class
MainWindow : Window {
-
public
MainWindow() {
-
InitializeComponent();
-
}
-
private
void
FormMain_Loaded(
object
sender, RoutedEventArgs e) {
-
//культура и регион установленные в системе по умолчанию
-
TextBox1.Text = CultureInfo.InstalledUICulture.ToString();
-
//раскладка клавиатуры по умолчанию
-
TextBox2.Text = InputLanguage.DefaultInputLanguage.Culture.ToString();
-
//для поля ввода TextBox4 устанавливаем раскладку клавиатуры на русскую
-
InputLanguageManager.SetInputLanguage(TextBox4,
new
CultureInfo(
"ru-RU"
));
-
//для поля ввода TextBox5 устанавливаем раскладку клавиатуры на английскую
-
InputLanguageManager.SetInputLanguage(TextBox5,
new
CultureInfo(
"en-US"
));
-
}
-
private
void
TextBox4_GotFocus(
object
sender, RoutedEventArgs e) {
-
/*как только поле ввода TextBox4 станет активным, в поле
-
ввода TextBox3 отобразится текущая раскладка клавиатуры*/
-
TextBox3.Text = InputLanguageManager.Current.CurrentInputLanguage.ToString();
-
}
-
private
void
TextBox5_GotFocus(
object
sender, RoutedEventArgs e) {
-
/*как только поле ввода TextBox5 станет активным, в поле
-
ввода TextBox3 отобразится текущая раскладка клавиатуры*/
-
TextBox3.Text = InputLanguageManager.Current.CurrentInputLanguage.ToString();
-
}
-
}
}