テキストボックスにフォーカスがあり、マウスカーソルが正確にホバリングしていない場合、マウスカーソルはデフォルトの矢印形状または定義したものになります。
入力を開始すると、mousecursor 自体が非表示になり、テキスト ボックス内で点滅するスティック IBeam タイプのカーソルのみが表示されます。
質問: 入力を開始してもマウスカーソルを初期位置に保持するにはどうすればよいですか?
興味深いことに、これは WPF アプリでは発生しません。
テキストボックスにフォーカスがあり、マウスカーソルが正確にホバリングしていない場合、マウスカーソルはデフォルトの矢印形状または定義したものになります。
入力を開始すると、mousecursor 自体が非表示になり、テキスト ボックス内で点滅するスティック IBeam タイプのカーソルのみが表示されます。
質問: 入力を開始してもマウスカーソルを初期位置に保持するにはどうすればよいですか?
興味深いことに、これは WPF アプリでは発生しません。
みんな...それはとてつもなく簡単でした。TextBox.KeyDown では、毎回カーソルを移動して以前の場所を指す必要があります..
Cursor.Position = new Point( oldX, oldY );
ここで唯一醜いのは、アニメーションカーソルの場合、アニメーションが毎回最初からやり直すことです。また、入力とマウスの移動を同時に行うことはできません。一方、誰が気にするのですか?Winform アプリは WPF アプリよりも醜い傾向がありますね。
質問にお答えします。副作用と影響はあなたの責任です。それを行う別の方法はありますか?私は確信しています。
ユーザーが入力しているかどうかの状態を保持する「状態」変数を作成します。テキストボックスには、誰かが入力しているとき、EN_CHANGE など、イベントのファミリー全体などを知らせるさまざまなイベントがあります。ユーザーが入力しているときに状態変数を true に設定します。入力していない場合は False、EN_LOSTFOCUS など。
PreProcessMessage イベントまたは PreTranslateMessage イベント、または適切と思われるイベントを介してマウス入力をトラップします。
状態変数が true のときに、OnPaint イベントで "ShowCursor" または場合によっては "SetCursor" を呼び出します。ええ、毛むくじゃらです。状態変数が false の間は呼び出さないでください。
この後デバッグ、デバッグ、デバッグ。HTH
これが明確な投稿でない場合は、回答を拡大します。
私の知る限り、それを行う方法はありません。Windowsの「入力中にポインタを非表示」設定をオフにした後でも、テキストボックスだけでなくフォーム全体の上にカーソルを置くと、カーソルが消えます。
テキストボックスコントロールまたはフォームのプロパティには、この動作に影響を与えるものは何もないようです。
これは Windows の設定です。
コントロール パネルの [マウス] に移動すると、「入力中にポインターを非表示にする」のような設定が表示されます。