0

我有一个注册系统,人们可以在其中扫描条形码并将其登录。条形码在“*”后面有一个唯一的编号。当他们扫描他们的代码时,它会进入列表框并清除文本框中的其余部分,但是,它不会清除“*”。

有任何想法吗 ?这是代码的夹头:

private void textBox1_KeyUp(object sender, KeyPressEventArgs e)
        {
        Object returnValue;

        string txtend = textBox1.Text;
        returnValue = textBox1.Text.Replace(@"*", "");

        if (e.KeyChar != '*') return;
        {
          if (listBox1.Items.Contains(returnValue))
           {
             for (int n = listBox1.Items.Count - 1; n >= 0; --n)
              {
               string removelistitem = returnValue.ToString();
               if (listBox1.Items[n].ToString().Contains(removelistitem))
               {
                //listBox1.Items.RemoveAt(n);
               }
             }
           }
          else
          listBox1.Items.Add(returnValue);
          textBox1.Clear();
          System.IO.StreamWriter sw = new System.IO.StreamWriter(fullFileName);
          foreach (object item in listBox1.Items)
          sw.WriteLine(item.ToString());
          sw.Flush();
          sw.Close();
          if (listBox1.Items.Count != 0) { DisableCloseButton(); }
          else
          {
            EnableCloseButton();
          }
          label6.Text = "Currently " + listBox1.Items.Count.ToString() + " in attendance.";
        }
    }
4

2 回答 2

2

这条线

if (e.KeyChar != '*') return;

当按下的键不是“*”时,提前结束事件处理。使用以下 { } 块,它看起来像一个旧的/测试的遗物。

else在第一个if-Block之后也可能存在一些问题。我建议始终使用 { },即使块中只有一行。

于 2013-09-24T15:36:10.100 回答
2

重读您的问题后,我了解到在处理“*”后,它被插入到空文本框中。

要停止处理按键事件,请使用以下语句:

e.Handled = true;

这表明该事件已由您的代码处理,不应进一步处理。

于 2013-09-24T16:15:18.077 回答