2016-12-09 73 views
0

我的程序允許插入0 - 100之間的數字。阻止用戶輸入尾隨零c#

但是,它們只能是非重複的。我在程序中遇到的問題是當用戶輸入0時,它會將它輸入到列表框中。

這裏是問題所在,用戶可以輸入一個尾隨零,如00。這將允許用戶在列表框中輸入另一個0,這會產生重複。如何防止用戶這樣做,因此只能插入一個零。

      //If pass validation add number to listbox 
          if (int.TryParse(txtInsert.Text, out dnum)) 
          { 

           Convert.ToInt32(lstNumberList.Items.Add("\t" + dnum));//Insert number with tab 
           index++; 
+1

你在哪裏檢查重複項? –

+0

您的值列表已添加到哪裏? – HimBromBeere

+1

? if(int.TryParse(txtInsert.Text,out dnum)&&!lstNumberList.Items.Contains(「\ t」+ dnum))Convert.ToInt32(lstNumberList.Items.Add(「\ t」+ dnum))' –

回答

2

不要拿string S其中,你將有前導零

"1" != "01" != "001" != "0001" != ... 

int的煩惱:

1 == 01 == 001 == 0001 == ... 

事情是這樣的:

// Nothing entered e.g. " " 
if (string.IsNullOrWhiteSpace(txtInsert.Text)) { 
    MessageBox.Show("Oops! Please enter a number to add to the list"); 

    return;  
} 

int value; 

// Invalid value entered (e.g. "bla-bla-bla") 
if (!int.TryParse(txtInsert, out value)) { 
    MessageBox.Show("Oops! Invalid number"); 

    return; 
} 

// Value is out of [0..100] range 
if ((value < 0) || (value > 100)) { 
    MessageBox.Show($"Oops! {value} is out of [0..100] range"); 

    return; 
} 

// Duplicates 
if (lstNumberList.Items.Contains("\t" + value.ToString())) { 
    MessageBox.Show($"Oops! {value} is a duplicate number"); 

    return; 
} 

... 

// All tests are passed, let's add the value 
lstNumberList.Items.Add("\t" + value.ToString());