Текстовое поле Devexpress теряет фокус после открытия OSK
У меня есть текстовое поле devexpress в usercontrol в приложении winforms. Проблема заключается в том, что когда пользовательский контроль загружен, и пользователь нажимает на текстовое поле devexpress, которое, в свою очередь, вызывает клавиатуру OSK, теряет фокус из текстового поля.
Пользователь не может напрямую начать печатать на OSK. Вместо этого ему нужно нажать на текстовое поле, чтобы снова сфокусироваться и начать печатать.
Пожалуйста, предложите, если есть какое-либо решение для этого.
В результате отладки я обнаружил, что когда я ставлю точку останова на установленный код фокуса, фокус назначается текстовому полю. Но когда я пытаюсь запустить его за один раз, он не устанавливает фокус.
private void OnMouseClickUserControl(object sender, MouseEventArgs e)
{
// verify if the button is displayed
if (!this.ShowButton)
{
this.OnEnterUserControl(this, e);
}
}
private void OnEnterUserControl(object sender, EventArgs e)
{
// verify if button is displayed
if (!this.ShowButton)
{
// set the input scope
this.SetInputScope();
// show the keyboard
TabTip.OpenTabTip();
// focus the helper textbox
//this.tbxText.Focus();
this.tbxText.SelectAll();
this.tbxText.SelectionLength = 0;
}
}
public static bool OpenTabTip()
{
bool result = false;
// reset the main window handle
TabTip._keyboardMainWindowHandle = IntPtr.Zero;
string osk = Path.Combine(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "system32"), "osk.exe");
string pathX64 = Environment.ExpandEnvironmentVariables("%ProgramW6432%");
string pathX32 = Environment.ExpandEnvironmentVariables("%ProgramFiles(x86)%");
// in case of 32 bit systems
if (osk.Contains(pathX32))
osk = osk.Replace(pathX32, pathX64);
// start the keyboard process
ProcessStartInfo startInfo = new ProcessStartInfo(osk);
Process tmp = System.Diagnostics.Process.Start(startInfo);
// wait until starting the process has been finished
//result = tmp.WaitForInputIdle(5000);
// refresh the process information
tmp.Refresh();
}