ここから例を挙げて、ニーズに応じてテキストボックスをサブクラス化しました。
同様に、NumericUpDownコントロールをサブクラス化して、selectAll機能を取得し、ポイント( "。")文字がコンマ( "、")文字に押された場合に置き換えて、自分のロケールにより適したNumericUpDownコントロールに適合させようとします。
ただし、NumericUpDownにはtextboxと同じプロパティがないため、これを行うことはできません。これらのコントロールの両方が同じように動作するようにしたいと思います。
私のコードでは、SelectAllとSelectionLengthの2つの問題が残っています。
Option Explicit On
Option Strict On
Public Class xNumericUpDown
Inherits NumericUpDown
Private alreadyFocused As Boolean
Protected Overrides Sub OnLeave(ByVal e As EventArgs)
MyBase.OnLeave(e)
Me.alreadyFocused = False
End Sub
Protected Overrides Sub OnGotFocus(ByVal e As EventArgs)
MyBase.OnGotFocus(e)
If MouseButtons = MouseButtons.None Then
Me.SelectAll() ' HOW TO MAKE SELECTALL SUB FOR NUMERICUPDOWN?
Me.alreadyFocused = True
End If
End Sub
Protected Overrides Sub OnMouseUp(ByVal mevent As MouseEventArgs)
MyBase.OnMouseUp(mevent)
If Not Me.alreadyFocused AndAlso Me.SelectionLength = 0 Then ' HOW TO CHECK SELECTIONLENGTH FOR NUMERICUPDOWN?
Me.alreadyFocused = True
Me.SelectAll() ' HOW TO MAKE SELECTALL SUB FOR NUMERICUPDOWN?
End If
End Sub
Protected Overrides Sub OnKeyPress(ByVal keyevent As KeyPressEventArgs)
MyBase.OnKeyPress(keyevent)
If keyevent.KeyChar = "." Then
keyevent.KeyChar = CChar(",")
End If
End Sub
End Class
これを機能させるのを手伝ってください。