ボタンをクリックしたときにカーソルをテキストボックスに移動したい。どうやってやるの?Focus()メソッドを試しましたが、機能しませんでした。コードを以下に示します。
CsNIPAddrTextBox.Focus();
CsNIPAddrTextBox.TabIndex = 1;
ボタンをクリックしたときにカーソルをテキストボックスに移動したい。どうやってやるの?Focus()メソッドを試しましたが、機能しませんでした。コードを以下に示します。
CsNIPAddrTextBox.Focus();
CsNIPAddrTextBox.TabIndex = 1;
それが「適切な」TextBox(つまりカスタムではない)の場合は、単に呼び出すだけでFocus()
機能するはずです。ただし、読み取り専用の場合はそうではない可能性があります(よくわかりませんが、試したことはありません。読み取り専用ボックスでキャレットを取得できることはわかっています。これは、フォーカスを取得できることを意味します)。そうでなければ、Enabled
フォーカスを設定することはできません。
プロパティがtrueであることを確認しCanFocus
ます。そうでない場合は、コントロールがフォーカスを受け取れない他の理由がある可能性があります。
true
ただし、それでもキャレットがコントロールに到達しない場合は、それを受信していることを確認する必要があります。テキストボックスのイベントのイベントハンドラーを追加し、GotFocus
ブレークポイントを設定して、ヒットすることを明確にします。私の推測では、ブレークポイントがヒットするでしょう。もしそうなら-答えは、ボタンのクリックが発生した直後に、別のプロセスが別のコントロールにフォーカスを設定しているということです。 たとえば、検証イベントハンドラーでこの種のことを行うと、ハンドラーが起動されたときにWindowsフォームパイプラインが既にコントロールを変更しているため、同様の結果が得られます。
また、なぜ設定しているのTabIndex=1
ですか?通常TabIndex
、設計時に設定され、そのままになります(もちろん、これらが動的に作成されない限り)。これを行う特別な理由がない限り、私はその行を削除します。これが機能する/機能しない理由とは関係ありません-単なる観察です。
Edit again:
If you try to select a TextBox
in the Click
event of a TreeView
, it usually fails, because after the Click
event the TreeNode
will be selected, making your previous Focus()
or Select()
useless. The workable way is, perhaps, calling them in a Timer
.
Timer t = new Timer();
t.Interval = 10;
t.Tick += new EventHandler((s,ev)=>textBox2.Focus());
t.Start();
This is more like a hack though...
私が正しく読んだ場合、あなたはマウスカーソルをテキストボックスに移動することについて話しているのですか?-次に、次のようなコードを使用できます。
System.Windows.Forms.Cursor.Position =
PointToScreen(
new Point( textBox1.Location.X + 5, textBox1.Location.Y + 5)
);
TextBox.Select メソッドを使用する必要があります
例えば
textbox1.Select(textbox1.Text.Length,0);
Yout テキスト ボックス内のテキストの末尾にカーソルを設定します。