2013-04-08 80 views
1

这是我的代码。C#:Tooltip on Focus on WPF TextBox

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控件集中或类似

任何帮助将不胜感激。

+0

而不是工具提示,使用['弹出Control'](http://msdn.microsoft.com/en-us /library/system.windows.controls.primitives.popup.aspx)。 – Dom 2013-04-08 16:17:41

+1

在用户开始输入之前检查*可能会更好。 – 2013-04-08 16:20:09

+0

好的,我将它改为GotFocus Event,但问题依然存在。显示没有MouseHover的工具提示。 private void txtPassword_GotFocus(object sender,RoutedEventArgs e) Boolean Capslock = Console.CapsLock; (Capslock == true) { txtPassword.ToolTip =“Caps Lock On”。 } } – Butters 2013-04-08 16:27:50

回答

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; 
     } 
    } 
+0

试过这个。喜欢弹出的方法,而不是工具提示。使用这个。谢谢。 – Butters 2013-04-08 16:50:38

3

你需要使用一个提示控制,并设置StaysOpen和ISOPEN属性为true,此caueses工具提示保持打开状态,直到你将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; 
     } 
    } 
+0

这起作用。谢谢。 – Butters 2013-04-08 16:51:08