C# C:关于WPF文本框焦点的工具提示

C# C:关于WPF文本框焦点的工具提示,c#,wpf,textbox,tooltip,onfocus,C#,Wpf,Textbox,Tooltip,Onfocus,这是我的密码 private void txtPassword_PasswordChanged(object sender, RoutedEventArgs e) { Boolean Capslock = Console.CapsLock; if (Capslock == true) { txtPassword.ToolTip = "Caps Lock is On.";

这是我的密码

private void txtPassword_PasswordChanged(object sender, RoutedEventArgs e)
        {
            Boolean Capslock = Console.CapsLock;
            if (Capslock == true)
            {
                txtPassword.ToolTip = "Caps Lock is On.";
            }
        }
我正在尝试获取工具提示,以便在WPF控件上的TextChanged事件上显示。如果Caps Lock处于启用状态,则当我将鼠标移到txtPassword控件上时,上述代码工作正常,并显示带有上述文本的工具提示

但我正在寻找的东西,将显示工具提示时,你开始键入无论鼠标在TXT密码控制或没有。比如当TXT密码控件处于焦点或类似状态时


任何帮助都将不胜感激。

您需要使用工具提示控件,并将StaysOpen和IsOpen属性设置为true,这将使工具提示保持打开状态,直到您将其关闭,IsOpen=false可能在lostFocus上 代码如下:

 private void TextBox_GotFocus(object sender, RoutedEventArgs e)
    {
         Boolean Capslock = Console.CapsLock;
         if (Capslock == true)
         {
             ToolTip toolTip = new ToolTip();
             toolTip.Content = "Caps lock is on";
             toolTip.StaysOpen = true;
             toolTip.IsOpen = true;

             (sender as TextBox).ToolTip = toolTip;
         }
    }

您需要使用工具提示控件,并将StaysOpen和IsOpen属性设置为true,这会使工具提示保持打开状态,直到您在lostFocus上通过IsOpen=false将其关闭 代码如下:

 private void TextBox_GotFocus(object sender, RoutedEventArgs e)
    {
         Boolean Capslock = Console.CapsLock;
         if (Capslock == true)
         {
             ToolTip toolTip = new ToolTip();
             toolTip.Content = "Caps lock is on";
             toolTip.StaysOpen = true;
             toolTip.IsOpen = true;

             (sender as TextBox).ToolTip = toolTip;
         }
    }

你可能想考虑使用这个。

XAML:


你可能想考虑使用这个。

XAML:


使用工具提示而不是工具提示。最好在用户开始键入之前进行检查。好的,我将其更改为GotFocus事件,但问题仍然相同。不使用鼠标悬停显示工具提示。private void txtPassword_GotFocusobject sender,RoutedEventArgs e{Boolean Capslock=Console.Capslock;如果Capslock==true{txtPassword.ToolTip=Caps Lock处于启用状态。}}您可以尝试挂接到GotKeyboardFocus,LostKeyboardFocus,KeyUp events并检查Capslock并将工具提示的IsOpen属性设置为true以显示它。使用工具提示而不是工具提示。最好在用户开始键入之前进行检查。好的,我将其更改为GotFocus事件,但问题仍然是一样的。不使用鼠标悬停显示工具提示。private void txtPassword_GotFocusobject sender,RoutedEventArgs e{Boolean Capslock=Console.Capslock;如果Capslock==true{txtPassword.ToolTip=Caps Lock处于启用状态。}}您可以尝试挂接到GotKeyboardFocus,LostKeyboardFocus,设置关键帧事件并检查Capslock,然后将工具提示的IsOpen属性设置为true以显示它。已尝试此操作。喜欢弹出式方法而不是工具提示。用这个。谢谢,我试过这个。喜欢弹出式方法而不是工具提示。用这个。谢谢
private void txtPassword_TextChanged(object sender, TextChangedEventArgs e)
    {
        Boolean Capslock = Console.CapsLock;
        if (Capslock == true)
        {
            PopupTextBlock.Text = "Caps Lock is On.";
            txtPasswordPopup.IsOpen = true;
        }
        else
        {
            txtPasswordPopup.IsOpen = false;
        }
    }