- 日時: 2009/12/26 22:11
- 名前: 花ちゃん
 
   - ***********************************************************************************
 * カテゴリー:[システム関係][テキストボックス][キー操作]                      * * キーワード:カーソル,プロンプト,キャレット,,,                                  * ***********************************************************************************
  元質問:テキストボックスの入力プロンプトの非表示 - ジェクト 2005/06/23-00:49 No.1848 
  早速、質問なのですが、テキストボックスをクリックしたときに入力プロンプト(入力カーソル?)がチカチカしますよね?私の設定ではテキストボックスをread onlyにしているので、入力プロンプトを非表示にして問題ないというか、意味がないのでどちらかというと消したいのですが何か良い方法はあるのでしょうか?
  -----------------------------------------------------------------------------------
  ----------------------------------------------------------------------------------- HideCaret 関数 を .NET で試して見たのですが、ちょっと動きが素直でないようなので 注意が必要かと思います。 キャレットが移動すると表示してしまうのでEnter イベントに書かないで GotFocus イベントに書く必要があるようです。 Enter イベント → GotFocus イベント の順番でイベントが発生しており、Enter イベントに 書くとGotFocus イベントで表示してしまう。
  表示する場合は、ShowCaret API 関数を使いますが、HideCaret 関数を使用しなければ 表示するので、フラグでも設定してやればいいかと思います。 (使用方法に合わせてコードを書いて下さい。下記は参考までに)
 
     <System.Runtime.InteropServices.DllImport("USER32.DLL", _    CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _    Private Shared Function HideCaret( _       ByVal hwnd As IntPtr) As Integer    End Function
      Private crtHide As Boolean
      Private Sub Button1_Click(ByVal sender As System.Object, _                               ByVal e As System.EventArgs) Handles Button1.Click         crtHide = True     End Sub
      Private Sub Button2_Click(ByVal sender As System.Object, _                               ByVal e As System.EventArgs) Handles Button2.Click         crtHide = False     End Sub
      Private Sub TextBox1_GotFocus(ByVal sender As Object, _                            ByVal e As System.EventArgs) Handles TextBox1.GotFocus         If crtHide Then             Call HideCaret(TextBox1.Handle)         End If     End Sub
  
 
  |