私はそれをクリックしてOnScreenKeyboardを表示するTextBox UserControlを持っています。 OnScreenKeyboardを開始し、私のTextBoxの分離コードは次のようになります。セルフメイドのOnScreenKeyboardは反応するために2番目のタップが必要です
private void TextBoxText_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
TextBox textbox = sender as TextBox;
US_Keyboard keyboardWindow = new US_Keyboard(textbox, Window.GetWindow(this));
if (keyboardWindow.ShowDialog() == true)
textbox.Text = keyboardWindow.InputSource.Text;
}
OnScreenKeyboardは、Windowから継承する部分クラスです。 OnScreenKeyboardのコンストラクタは次のようになります。
public US_Keyboard(TextBox owner, Window wndOwner)
{
InitializeComponent();
this.Owner = wndOwner;
this.DataContext = this;
//Delete text in textbox
if (InputSource.Text.Length > 0)
{
OldTextBoxValue = InputSource.Text;
InputSource.Text = "";
}
//Set caret to start point of textbox
AdornerLayer layer = AdornerLayer.GetAdornerLayer(owner);
CaretAdorner adorner = new CaretAdorner(owner);
adorner.OffsetX = _CaretOffsetXDefault;
layer.Add(adorner);
_adorner = adorner;
_layer = layer;
SetKeyboardSize();
SetKeyboardPosition();
}
これまでのところ、すべては一つのことを除いて、正常に動作します:OnScreenKeyboard-ウィンドウが表示された後、それが反応する第2のタップを必要とします。それはフォーカスがないように見え、フォーカスを得るためには1回のクリックが必要です。どうすればこの問題を解決できますか?
私はすでにコンストラクタで次のことを試してみましたが、それは助けにはならない:
this.Focus();
[WPFウィンドウセットフォーカス](https://stackoverflow.com/questions/6395645/wpf-window-set-focus)の可能な複製 – Mahmoud
同じ質問のように聞こえるが、解決策は私のためには機能しない –
フォーカスを必要としているのをもっと心配しています...オンスクリーンキーボードは、主要な入力フォーカスが入力を受け取る別のアプリケーションにとどまっている間にマウスのクリックを受け取ることによって理想的には動作しませんか? – grek40