Я подклассы текстовое поле в соответствии с моими потребностями, по примеру из hereПодкласс контроль NumericUpDown
На этом пути я пытаюсь подкласс управления NumericUpDown, чтобы получить функциональность SelectAll на них и заменить, если точка («») полукокс нажата на запятую (",") char, чтобы подобрать элемент управления NumericUpDown, более подходящий для моей локали.
Но я не могу этого сделать, потому что NumericUpDown не обладает такими же свойствами, как текстовое поле, и мне бы хотелось, чтобы оба этих элемента управления ведут себя одинаково.
В моем коде две проблемы остается, SelectAll и SelectionLength:
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
Пожалуйста, помогите, чтобы получить эту работу.
Заменить символ хорошо работает, выбирая с клавиатуры OK но выбор с помощью мыши не работает. –
Заменив Me.Text.Length = 0 на Me.Text.Length <> 0, как вы сказали, выбор с помощью мыши (вверх) также работает так, как ожидалось. Большое спасибо! –
@ user973238 Я рад, что это сработало. Спасибо, что приняли :-) – AbZy