- PR -

テキストボックスのカーソル位置を左端に

1
投稿者投稿内容
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-10-03 11:54
 前回はありがとうございました。

 テキストボックスに値を入力後Validatingイベントでチェックし
エラーの場合 e.Cancel = Trueで再入力しますが、
その時カーソルは右端になっています。
再入力しやすくするのに、カーソル位置を左端に持って行きたい
またはテキストボックスの入力した内容を選択した状態に
したいのですが、可能でしょうか?

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-10-03 12:04
引用:

なびさんの書き込み (2007-10-03 11:54) より:

テキストボックスに値を入力後Validatingイベントでチェックしエラーの場合 e.Cancel = Trueで再入力しますが、その時カーソルは右端になっています。


この前提が通常の動作ではないのでお答えすることができないです。 ひょっとすると、"カレットの位置が (右端から) 変わらない" という意味でしょうか? であれば、

コード:

    Me.TextBox1.Select(0, 0)


こういうコードを然るべき場所に加えればおkです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-10-03 13:51
返答、ありがとうございます。

Private Sub TEXT1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TEXT1.Enter
Me.TEXT1.SelectionStart = 0
Me.TEXT1.SelectionLength = Me.TEXT1.Text.Length
End Sub

にて対応できましたが、テキストボックスの分だけ記述する必要がありますが
なんとか簡素化できないのでしょうか?


Private Sub TEXT1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TEXT1.Enter
Me.TEXT1.SelectionStart = 0
Me.TEXT1.SelectionLength = Me.TEXT1.Text.Length
End Sub

Private Sub TEXT2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TEXT2.Enter
Me.TEXT2.SelectionStart = 0
Me.TEXT2.SelectionLength = Me.TEXT2.Text.Length
End Sub

Private Sub TEXT3_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TEXT3.Enter
Me.TEXT3.SelectionStart = 0
Me.TEXT3.SelectionLength = Me.TEXT3.Text.Length
End Sub

と3つテキストボックスがあった場合
3つもEnterイベントプロシージャを書きました。

何とか1つにできますか?

ご教授宜しくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-10-03 13:57
引用:

なびさんの書き込み (2007-10-03 13:51) より:

何とか1つにできますか?


いくつか方法は考えられると思います。
  1. 拡張コントロールを作成してそちらで実装する
  2. コンポーネントを噛ませて処理を委譲する
  3. デコレータ クラス側でイベント後の動作を統合する
どれが望ましいかはちょっと私では判断することができません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-10-03 15:01
じゃんぬねっとさん、毎回ありがとうございます。

1

スキルアップ/キャリアアップ(JOB@IT)