Khabibb Mubarakk Ответов: 1

Как удалить последнее число в текстовое поле (Тип данных двойной)


у меня есть два текстовых поля...
на textbox1_textchanged событие, которое я установил
поле textbox2.текст=элемент textbox1.текст
проблема, когда я очищаю все номера на textbox1..
в textbox2 все еще есть одно число, если я нажму 0 на textbox1,
тогда textbox2 будет ясен ..
почему именно так? и как ее решить?

Что я уже пробовал:

If TextBox1.Text = "" Or Not IsNumeric(TextBox1.Text) Then
           Exit Sub
       End If
       Dim a As Double
       a = TextBox1.Text
       TextBox1.Text = Format(a, "#,###")
       TextBox1.SelectionStart = Len(TextBox1.Text)


       TextBox2.Text = TextBox1.Text

1 Ответов

Рейтинг:
1

Graeme_Grant

Вам нужно проверить ключ до того, как текст будет изменен, и отменить/подавить, если он недействителен.

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

    Dim a As Double
    a = TextBox1.Text
    TextBox1.Text = Format(a, "#,###")
    TextBox1.SelectionStart = Len(TextBox1.Text)
    TextBox2.Text = TextBox1.Text

End Sub

Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown

    If e.KeyCode < Keys.D0 Or e.KeyCode > Keys.D9 Then
        e.SuppressKeyPress = True
    End If

End Sub

Обновление: Если вы также хотите разрешить редактирование ключей, вот обновленная версия события KeyDown.
Private validKeys() As Integer =
{
    Keys.Delete,
    Keys.Back,
    Keys.Clear,
    Keys.Home,
    Keys.Left,
    Keys.Right,
    Keys.End,
    Keys.D0,
    Keys.D1,
    Keys.D2,
    Keys.D3,
    Keys.D4,
    Keys.D5,
    Keys.D6,
    Keys.D7,
    Keys.D8,
    Keys.D9
}

Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown

    If Not validKeys.Contains(e.KeyCode) Then
        e.SuppressKeyPress = True
    End If

End Sub


Khabibb Mubarakk

все еще не ясно на textbox2

Graeme_Grant

вот почему:

Текстовое поле textbox1.Объект Selectionstart = Лен(Текстовое Поле Textbox1.Текст) ' ничего не делает
TextBox2. Text = TextBox1 . Text ' зеркала TextBox1

Если вы хотите очистить TextBox2 если TextBox1 изменился то:

Если Len(TextBox1. Text) > 0, то
Поле textbox2.Текст = ""
Конец, Если

Khabibb Mubarakk

я пытаюсь, но когда я печатаю на tb1, то на tb2 просто пусто..

Graeme_Grant

Я привел пример ... Вам нужно изменить мой пример на то, что вам нужно:

Если Len(TextBox1. Text) > 0, то
"если условие выполнено, установите TextBox2. Text на то, что требуется...
Конец, Если

Или измените тест на то условие, которое вы хотите ... Это упражнение я оставил для вас. ;)

Khabibb Mubarakk

вы знаете, если я использую это

Если Поле Textbox2.Текст = "" Или Нет Статистика(Поле Textbox2.Текст) Затем
Выход Из Субмарины
Конец, Если

б = поле textbox2.Текст
TextBox2. Text = формат (b, "#,###")
Поле textbox2.Объект Selectionstart = Лен(Поле Textbox2.Текст)
TextBox4.Текст = Поле Textbox2.Текст
Если Len(TextBox2. Text) = 0, То
TextBox4.Текст = ""
Конец, Если
неужели ничего не происходит же не может проясниться
но если я использую это
Если Удвоить.Метод Tryparse(Textbox1 Элемент.Текста, в) то
TextBox1. Text = Format (a, "#,###")
Текстовое поле textbox1.Объект Selectionstart = Лен(Текстовое Поле Textbox1.Текст)
TextBox6.Текст = Элемент Textbox1.Текст
Конец, Если
Если Len(TextBox1. Text) = 0, То
TextBox6.Текст = ""
Конец, Если
эта работа ..
ты можешь мне объяснить