您使用退格键删除的号码

时间:2015-10-14 13:27:12

标签: c# .net winforms

当我删除带有退格键的文本框中的数字时,我想保存该数字,以便我可以将其与其他文本框中的其他数字进行比较。我怎么做? 这是我想要的代码:

List<TextBox> box1;
private void Form1_Load(object sender, EventArgs e)
    {   box1 = this.Controls.OfType<TextBox>()
              .Where(x => x.Name.StartsWith("textBox1")).ToList();

        foreach (TextBox t in box1)
            t.TextChanged += textBox_TC1;
     }

private void textBox_TC1(object sender, EventArgs e)
    {
        TextBox textBox = (TextBox)sender;
        if (textBox.Text.Length == 1 && allwhite == 0)
        {
            bool sameText = box1.Any(x => x.Text == textBox.Text &&
                                         !x.Equals(textBox));

            if (sameText)
                textBox.BackColor = System.Drawing.Color.Red;

        }
        else if (textBox.Text.Length == 0)
        {
            textBox.BackColor = System.Drawing.Color.White;
        }
    }

我想将我的新代码放在'else if(textBox.Text.Length == 0)'中,因为我只能在文本框中删除带有退格的文本,并且maxlength为1。 当我退格时,我想将该数字与box1中的所有其他文本框进行比较,然后如果该数字仅等于另一个文本框,则会使其他文本框返回白色。我不知道如何保存一个即将被删除的号码,所以如果你能帮助我,我会很开心。

2 个答案:

答案 0 :(得分:1)

你可以使用这种方法:

static void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    TextBox t = sender as TextBox;
    switch (e.KeyCode)
    {
        case Keys.Delete:
        case Keys.Back:
            int start = e.KeyCode == Keys.Back && t.SelectionLength == 0 ? t.SelectionStart - 1 : t.SelectionStart;
            int length = t.SelectionLength == 0 ? 1 : t.SelectionLength;

            // you can save your char right here....!

            t.Text = t.Text.Remove(start, length);

            e.SuppressKeyPress = true;
            break;
    }
}

答案 1 :(得分:1)

您应该使用TextChanged事件来检测TextBox上的更改,并且在TextChanged结束时,您应该保持当前值,例如Tag TextBox属性TextChanged 1}}并在想要将其与其他值进行比较时使用它。您不应使用... else if (textBox.Text.Length == 0) { var previusText = textBox.Tag as string; var items= box1.Where(x => x.Text == previusText && !x.Equals(textBox)).ToList(); if (items.Count()==1) { items[0].BackColor = System.Drawing.Color.White; } } //Keep previous text textBox.Tag = textBox.Text; ... 以外的任何事件,因为用户可以在不使用键盘的情况下删除或粘贴值。

例如,您可以编写如下代码:

var data = [
  {"itemName": "item1", "Jan": "4056479", "Feb": "3716377", "Mar": "6924148"},
  {"itemName": "item2", "Jan": "3034448", "Feb": "930077", "Mar": "1210250"},
  {"itemName": "item3", "Jan": "3938924", "Feb": "1624727", "Mar": "9626947"}
];