C # Поиск первого числа в integer / string

У меня есть TextChanged, где люди должны ввести число, но я не хочу, чтобы они сначала вводили число 0, как это сделать?

Пример: если они набирают, 1 частный void textBox1_TextChanged ( отправитель объекта , EventArgs e ) { string input = textBox1 . Текст . TrimStart ( '' ); if ( input . Length == 1 ) { textBox1 . Text = input == "0" ? "" : вход ; } } это нормально, но если они набирают 010, это не нормально, и я хочу, чтобы появилось окно и попросило повторить попытку.

Благодаря!

c#,string,winforms,integer,

-1

Ответов: 6


1 принят

Используйте событие. (Дважды щелкните событие в свойствах текстового поля в конструкторе). В этом примере обрезайте все ведущие пробелы перед сравнением и удалите символ, если этоprivate void textBox1_TextChanged(object sender, EventArgs e) { textBox1.Text = textBox1.Text.TrimStart('0'); }0

TextChanged

РЕДАКТИРОВАТЬ

Как указано m.rogalski и Roma, версия выше позволяет ввести 0 после ввода действительного символа. Эта версия ниже исправит эту ошибку:

TextBox_TextChanged

2

Добавьте обработчик в текстовое поле (в форме найдите событие для TextBox и введите это имя:) :void TextBox_TextChanged(object sender, EventArgs e) { var textBox = sender as TextBox; if (textBox != null) { textBox.Text = textBox.Text.Trim(); if (textBox.Text.Length > 0 && textBox.Text[0] == '0') { textBox.Text = textBox.Text.TrimStart('0'); MessageBox.Show("Incorrect value"); } } }TextBox textBox = new TextBox(); textBox.TextChanged += TextBox_TextChanged;

private void MyTextBox_TextChanged(object sender, EventArgs e)
{      
    var textBox = sender as TextBox;   
    if (textBox.Text.StartsWith("0"))      
        //alert user      
        MessageBox.Show("Invalid starting character");      
}

Или в коде:

MyTextBox.TextChanged += MyTextBox_TextChanged;

1

Это должно работать:

0

Конечно, вам нужно связать событие TextChanged в дизайнере или в коде следующим образом:

infinity

1

Начиная с начала:

Если они печатают, 10 это нормально, но если они набирают 010, это не нормально

Если пользователь может набирать целое число от 0до, то вы можете использовать это:if(textBox.Text.Length > 1 && textBox.Text[0] == '0')

if(textBox.Text.Length > 0 && textBox.Text[0] == '0')

Это предполагает, что пользователь может ввести «0» в качестве первого знака, только если он является только знаком. Если это не то, что вы хотели, измените его на это:

MessageBox

Идти дальше :

Я хочу, чтобы появилось окно, и попросите их повторить попытку

Вы можете просто показать textBoxи очистить текст внутри textBox:

textBox.Text = string.Empty;
MessageBox.Show("Value entered is incorrect. Please try again");

Затем, комбинируя их, у вас будет что-то вроде:

if(textBox.Text.Length > 1/* or 0 depending on what you need */ && textBox.Text[0] == '0')
{
    textBox.Text = string.Empty;
    MessageBox.Show("Value entered is incorrect. Please try again");
}

0

введите этот код после метода Initialize

textBox1.TextChanged = (s, o) =>
{
    if (textBox1.Text.StartsWith("0"))
    {
        textBox1.Text = textBox1.Text.Remove(0, 1);
        MessageBox.Show("Cant start with '0'");
    }
};
C #, строка, WinForms, целое число,
Похожие вопросы