Windowsフォームアプリケーションで「検索」テキストボックスコントロールに焦点を当てようとしています。このテキストボックスは、Windowsフォーム内のパネル内にあるユーザーコントロール内にあります(重要な場合)。私は見つけることができる3つの方法を試しました:
// 1
this.ActiveControl = myTextBox;
// 2
myTextBox.Focus();
// 3
myTextBox.Select();
どちらも動作しないようです。たとえば、最初のコントロールを試すと、アクティブコントロールは実際にはmyTextBoxに設定されますが、キーボードで何かを書き込もうとすると、textboxはそれを受け入れず、フォーカスを得るためにまずtextbox内をクリックする必要があります。これはすべての方法で同じです。何か不足していますか?
はい、ようやく答えが見つかりました:
私が言ったように、私のテキストボックスはフォーム内のパネル内のユーザーコントロール内にあります。ユーザーコントロールが必要な場合は、パネルに追加します。テキストボックスに焦点を合わせるには、最初にユーザーコントロールに焦点を当てる必要があります。
panel.Controls.Add(myUserControl);
myUserControl.Focus();
そして私のユーザーコントロールで:
myTextBox.Select();
MyTextBox.Focus()を使用した場合、機能しないことに注意してください(理由はわかりません)。また、myUserControl.Focus()の代わりにmyUserControl.Select()を使用した場合も機能しません。
これが機能する唯一の組み合わせのようです。
次のロジック手順を実行して、コントロールをフォーカスに設定できます。
your_control.Select();
your_control.Focus();
楽しい! :)