C#:专注于WPF TextBox的工具提示

时间:2013-04-08 16:14:40

标签: 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.";
            }
        }

我正在尝试在WPF控件上显示TextChanged事件上的工具提示。上面的代码工作正常,当我将鼠标移到txtPassword控件上时,如果Caps Lock已启用,则会显示带有上述文本的工具提示。

但我正在寻找能够在您开始输入时显示工具提示的内容,无论鼠标是否超过txtPassword控件。就像txtPassword控件集中或类似的时候一样

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:6)

您可能需要考虑使用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;
        }
    }

答案 1 :(得分: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;
         }
    }