C# WinCE下实现ComboBox的模糊搜索,非常方便

private ComboBox ComboBoxCurrent = new ComboBox();
       private ListView ListViewCurrent = new ListView();
       private string strFlag = "";
       private void P_DefinListViewPosition( Panel panelTemp)
       {
           System.Drawing.Point Location = new System.Drawing.Point(0, ComboBoxCurrent.Location.Y + ComboBoxCurrent.Height);
           int Height = panelTemp.Height - (ComboBoxCurrent.Location.Y + ComboBoxCurrent.Height) - 30;
           if (Height < 60)
           {
               Location = new Point(3, 50);
               Height = ComboBoxCurrent.Location.Y - 50;
           }
           ListViewCurrent.Location = new Point(3, Location.Y + panelTemp.Location.Y);
           ListViewCurrent.Height = Height;
           ListViewCurrent.BackColor = Color.LightBlue;
           //ListViewCurrent.Items[0].BackColor = System.Drawing.Color.Blue;
           //ListViewCurrent.Items[0].Selected = true;
           this.ListViewCurrent.Visible = true;
       }
       private void P_ListView_ICItem_DoubleClick(object sender, EventArgs e)
       {
           ListViewCurrent.Visible = false;
           if (ListViewCurrent.SelectedIndices.Count == 0)
           {
               return;
           }
           DataRow row = this.ListViewCurrent.Items[this.ListViewCurrent.SelectedIndices[0]].Tag as DataRow;
           //strFlag
           ComboBoxCurrent.Text = row["FName"].ToString();
           ComboBoxCurrent.Tag = row;
           ComboBoxCurrent.Focus();
       }
       private void P_ListView_KeyDown(object sender, KeyEventArgs e)
       {
           if (e.KeyCode == Keys.Return)
           {
               P_ListView_ICItem_DoubleClick(sender, e);
               return;
           }
           if (e.KeyCode == Keys.Escape)
           {
               ListViewCurrent.Visible = false;
               ComboBoxCurrent.Focus();
               return;
           }
       }
       private void P_comboBox_KeyDown(object sender, KeyEventArgs e)
       {
           if (e.KeyCode == Keys.Return /*&& listViewToControl.Visible == false*/)
           {
               string FNumber = ComboBoxCurrent.Text.Trim();
               if (FNumber.Length < 2)
               {
                   labelStatus.Text = "搜索条件太短,请输入查询条件!";
                   return;
               }
              string strSQL = @"select  top 50
t_ICItem.FItemID
,t_ICItem.FNumber
,t_ICItem.FName
,t_ICItem.FModel
,t1.FName as FUnitName
from t_ICItem Left Join t_MeasureUnit t1 on t_ICItem.FUnitID=t1.FItemID  
where t_ICItem.FNumber like '%" + FNumber + @"%'
or t_ICItem.FName like  '%" + FNumber + @"%'
";
               DataTable tableTemp = new DataTable();
               Cursor.Current = Cursors.WaitCursor;
               uint uiBeginTime = BaseWin32Function.GetTickCount();//计时开始
               if (true != ClassWebService.WebGetDataSetFromService(strSQL, ref tableTemp))
               {
                   labelStatus.Text = "网络超时,请重新操作或检查连网状态!" + CPublicParameters.P_ReturnTimePassed(uiBeginTime).ToString();
                   return;
                   //网络失败,直接返回。
               }
               if (CPublicParameters.GetDataTableCountAll(tableTemp) < 1)
               {
                   labelStatus.Text = "没有查询到任何记录,请重新操作!" + CPublicParameters.P_ReturnTimePassed(uiBeginTime).ToString();
                   return;
               }
               labelStatus.Text = "查找到记录" + CPublicParameters.GetDataTableCountAll(tableTemp).ToString() + @"条,请按上下键选择!" + CPublicParameters.P_ReturnTimePassed(uiBeginTime).ToString();
               CPublicParameters.DatatableSort(ref tableTemp, "FNumber");
               ListViewCurrent.Items.Clear();
               ListViewCurrent.BeginUpdate();
               for (int i = 0; i < CPublicParameters.GetDataTableCountAll(tableTemp); i++)
               {
                   DataRow dtRow = tableTemp.Rows[i];
                   ListViewItem lv = new ListViewItem(new string[] { dtRow["FNumber"].ToString(), dtRow["FName"].ToString() });
                   lv.Tag = dtRow;
                   ListViewCurrent.Items.Add(lv);
               }
               ListViewCurrent.Columns[0].Text = "产品代码";
               ListViewCurrent.Columns[0].Width = 100;
               ListViewCurrent.Columns[1].Text = "名称";
               ListViewCurrent.Columns[1].Width = 140;
               this.ListViewCurrent.EndUpdate();
               P_DefinListViewPosition(panel6);
               return;
           }
           if (e.KeyCode == Keys.Up && ListViewCurrent.Visible == true)
           {
               ListViewCurrent.Focus();
               return;
           }
           if (e.KeyCode == Keys.Down && ListViewCurrent.Visible == true)
           {
               ListViewCurrent.Focus();
               return;
           }
           if ((e.KeyCode == Keys.Escape || e.KeyCode == Keys.F14) && ListViewCurrent.Visible == true)
           {
               ListViewCurrent.Visible = false;
               return;
           }
       }
       private void comboBox10_KeyDown(object sender, KeyEventArgs e)
       {
           ComboBoxCurrent = comboBox10;
           ListViewCurrent = listView1;
           P_comboBox_KeyDown(sender, e);
       }
       private void listView1_ItemActivate(object sender, EventArgs e)
       {
           P_ListView_ICItem_DoubleClick(sender, e);
       }
       private void listView1_KeyDown(object sender, KeyEventArgs e)
       {
           if (e.KeyCode == Keys.Return)
           {
               P_ListView_ICItem_DoubleClick(sender, e);
               return;
           }
           if (e.KeyCode == Keys.Escape)
           {
               ListViewCurrent.Visible = false;
               ComboBoxCurrent.Focus();
           }
       }


你可能感兴趣的:(private)