3
votes

I have a textbox with a button inside (Telerik's RadTextBox with an Action configured). When the user presses the Action, a progress bas is displayed, the screen goes dark, and some magic happens.

My problem is that since the action doesn't result in the textbox losing focus, the on-screen keyboard is not hidden, and keeps covering half the screen.

I would like to programmatically hide the on-screen keyboard, but don't know how.

3
Can't you just forcefully set the focus on another control? - Kevin Gosse
@KooKiz - I could, and that's what I'm looking at now, but I was hoping for a real solution, and not a patch. - SaguiItay

3 Answers

9
votes

Just set focus to the main page:

this.Focus();

this will focus a control that doesn't use the keyboard and thus hide the keyboard. Unfortunately there is no API to the keyboard to hide it.

2
votes

Instead try disabling and then enabling the textbox in question in an appropriate place (like once a query has been submitted or an action triggered):

   TextBox.IsEnabled = false;
   TextBox.IsEnabled = true;

(Via https://stackoverflow.com/a/23905874/1963978)

Not clean, but it does the job (in Windows 10 mobile).

0
votes

here lot solution is available for a Textblock only but in my case AutoCompleteBox

  <toolkit:AutoCompleteBox Name="autoComplateTxt"
                                             Grid.Row="4"
                                             Margin="15,5,2,10"
                                             Padding="0"
                                             Height="65"
                                             Text=""
                                             BorderThickness="1"
                                             BorderBrush="Black"
                                             VerticalAlignment="Center"
                                             
                                          DropDownClosed="autoComplateTxt_DropDownClosed"
                                              />
 private void autoComplateTxt_DropDownClosed(object sender, RoutedPropertyChangedEventArgs<bool> e)
    {
        this.Focus();
    }