2013-09-26 40 views
3

我有一个注册应用程序,里面有“KeyChar”事件,它效果很好!但是当我在这个应用程序中给出相同的代码行时,它给我Operator '=='/'!=' cannot be applied to operands of type 'char' and 'string'运算符'=='不能应用于'char'和'string'类型的操作数

似乎无法弄清楚它为什么在另一个应用程序中工作,但不在这里! 任何帮助非常感谢!

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     SqlConnection DBConnection = new SqlConnection("Data Source=DATABASE;Initial Catalog=imis;Integrated Security=True"); 
     SqlCommand cmd = new SqlCommand(); 

     Object returnValue; 

     string txtend = textBox1.Text; 
     //string lastChar = txtend.Substring(txtend.Length - 1); 

     if (e.KeyChar == "L") 
     { 
      DBConnection.Open(); 
     } 
     if (DBConnection.State == ConnectionState.Open) 
     { 
      if (textBox1.Text.Length != 7) return; 
      { 
       //cmd.CommandText = ("SELECT last_name +', '+ first_name +'\t ('+major_key+')\t' from name where id [email protected]"); 
       cmd.CommandText = ("SELECT last_name +', '+ first_name from name where id [email protected]"); 
       cmd.Parameters.Add(new SqlParameter("Name", textBox1.Text.Replace(@"L", ""))); 
       cmd.CommandType = CommandType.Text; 
       cmd.Connection = DBConnection; 
       // sqlConnection1.Open(); 
       returnValue = cmd.ExecuteScalar() + "\t (" + textBox1.Text.Replace(@"L", "") + ")"; 
       DBConnection.Close(); 

       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); 
          //listBox1.Items.Add(removelistitem+" " +TimeOut+ Time); 
         } 

        } 
       } 
       else 
        listBox1.Items.Add(returnValue); 

       System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(fullFileName); 
       foreach (object item in listBox1.Items) 
        SaveFile.WriteLine(item.ToString()); 
       SaveFile.Flush(); 
       SaveFile.Close(); 

       textBox1.Clear(); 

       if (listBox1.Items.Count != 0) { DisableCloseButton(); } 
       else 
       { 
        EnableCloseButton(); 
       } 
       Current_Attendance_Label.Text = "Currently " + listBox1.Items.Count.ToString() + " in attendance."; 
       e.Handled = true; 
      } 
     } 
     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     else 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     { 
      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 SaveFile = new System.IO.StreamWriter(fullFileName); 
       foreach (object item in listBox1.Items) 
        SaveFile.WriteLine(item.ToString()); 
       SaveFile.Flush(); 
       SaveFile.Close(); 
       if (listBox1.Items.Count != 0) { DisableCloseButton(); } 
       else 
       { 
        EnableCloseButton(); 
       } 
       Current_Attendance_Label.Text = "Currently " + listBox1.Items.Count.ToString() + " in attendance."; 
       e.Handled = true; 
      } 
     } 
    } 

回答

16

使用该字符。单引号'定义character,而双引号"定义string

if (e.KeyChar == 'L') 
+0

不能相信我错过了!非常感谢你! –

+6

我也学到了很难:) –

+0

好抓住... :) – Ashok

相关问题