Показывать экранную клавиатуру левой кнопкой мыши на PasswordBox и должен скрываться при щелчке вне поля - PullRequest
0 голосов
/ 02 мая 2019

Платформа: C # WPF

Среда: Visual Studio 2013

Вопрос № 1 : хочу показатьтретье лицо на экранной клавиатуре при нажатии левой кнопки мыши на PasswordBox элемент управления C # WPF.Я использовал следующий код:

private void PasswordBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    System.Diagnostics.Process.Start("D:\\CCOnScreenKeyboard.exe"); 
}

Но он не запускается на экранной клавиатуре.Вместо этого он вызывает события MouseDoubleClick и GotFocus.

Вопрос № 2 :

Я хочу скрыть экранную клавиатуру при щелчке мыши за пределами PasswordBoxи снова отобразить левую кнопку мыши внутри поля.

Вопрос № 3 :

Я хочу показать клавиатуру одним щелчком мыши вместо двойного щелчка мыши

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Вы можете обработать событие PreviewMouseLeftButtonDown для родительского окна. Как то так:

bool isVisible = false;
PreviewMouseLeftButtonDown += (ss, ee) => 
{
    if (!passwordBox.IsMouseOver && isVisible)
    {
        System.Diagnostics.Process.GetProcessesByName("CCOnScreenKeyboard")?.FirstOrDefault()?.Kill();
    }
    else if (!isVisible)
    {
        System.Diagnostics.Process.Start("D:\\CCOnScreenKeyboard.exe");
        isVisible = true;

    }
};
0 голосов
/ 03 мая 2019

Полагаю, что лучший способ сделать это будет через использование событий Focus, поскольку вы хотите, чтобы клавиатура работала только с PasswordBox, и чтобы она работала после того, как вы перестали взаимодействовать.

private void PasswordBox_GotFocus(object sender, RoutedEventArgs e) => 
    Process.Start("D:\\CCOnScreenKeyboard.exe");

private void PasswordBox_LostFocus(object sender, RoutedEventArgs e)
{
    foreach (var process in Process.GetProcessesByName("CCOnScreenKeyboard"))
        process.Kill();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...