平台:C#WPF
环境:Visual Studio 2013
问题1 :我想在C#WPF的PasswordBox
控件上的鼠标左键按下时在屏幕键盘上显示第三方。我使用了以下代码:
private void PasswordBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
System.Diagnostics.Process.Start("D:\\CCOnScreenKeyboard.exe");
}
但是它不能在屏幕键盘上启动。而是在MouseDoubleClick
和GotFocus
事件上触发。
问题2 :
我想在PasswordBox
之外单击鼠标时在屏幕键盘上隐藏,然后在框内的鼠标左键下方再次显示。
第3个问题:
我要在单击时显示键盘,而不是鼠标双击
答案 0 :(得分:0)
我相信最好的方法是使用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();
}
答案 1 :(得分:0)
您可以处理父窗口的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;
}
};