1

这是我的代码。

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 控件上时,上面的代码可以正常工作并显示带有上述文本的工具提示。

但是我正在寻找在您开始输入时会显示工具提示的东西,无论是否将鼠标悬停在 txtPassword Control 上。就像当 txtPassword 控件被聚焦或类似时

任何帮助将不胜感激。

4

2 回答 2

7

您可能要考虑为此使用PopUp

XAML:

<TextBox x:Name="txtPassword" Height="30" Width="100" TextChanged="txtPassword_TextChanged" ></TextBox>
<Popup x:Name="txtPasswordPopup" Placement="Top" PlacementTarget="{Binding ElementName=txtPassword}" IsOpen="False">
    <TextBlock x:Name="PopupTextBlock" Background="Wheat">CAPSLOCK IS ON!</TextBlock>
</Popup>

代码隐藏:

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;
        }
    }
于 2013-04-08T16:34:12.843 回答
3

您需要使用工具提示控件并将 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;
         }
    }
于 2013-04-08T16:34:05.377 回答