Avatar billede km2 Nybegynder
12. januar 2011 - 16:36 Der er 1 kommentar og
1 løsning

autocomplete combobox

Jeg har en autocomplete combobox som virker på samme måde som google søgefeltet i internet explorer. Når jeg skriver k så kommer der en sorteret liste af ord som begynder med k osv. Da jeg har ca. 100 linier hvor der er et tal først og så en bindestreg ligesom 50-firmanavn så virker autocomplete ikke på disse linier. De ville kun virke hvis jeg trykkede et tal ind.
Mit spørgsmål lyder således:
Hvordan laver jeg min autocomplete combobox således at den søger på de ord som står efter min bindestreg, det vil sige at den så viste firmanavne.
Avatar billede km2 Nybegynder
12. januar 2011 - 16:43 #1
Dette er min kode til min applikation og autocomplete combobox


private void dropdownitems()
    {
   
      foreach (string arrayListItem in arrList)
      {
        //Adds all items from file in combobox items list
        cbxTimeRegistryList.Items.Add(arrayListItem);
        //Sets up autocomplete functionality for combobox
        autoCompleteStrings.Add(arrayListItem);
      }

      cbxTimeRegistryList.AutoCompleteCustomSource = autoCompleteStrings;
      cbxTimeRegistryList.AutoCompleteMode = AutoCompleteMode.Suggest;
      cbxTimeRegistryList.AutoCompleteSource = AutoCompleteSource.CustomSource;
     
      cbxTimeRegistryList.Items.Add(cbxTimeRegistryList.Text);
   
    }


private void ReadStringsFromFile()
    {
      //Reads in textfile
      FileStream f = new FileStream("C:\\timeregistrytextstrings.txt", FileMode.Open, FileAccess.Read);
      StreamReader sr = new StreamReader(f);


      string line;
      while ((line = sr.ReadLine()) != null)
      {
        //while loop adds all items from textfile in combobox items list
        cbxTimeRegistryList.Items.Add(line);
     
      }

      //stream close
      sr.Close();
      //file close
      f.Close();

    }

private void SearchStringsInFile()
    {
      FileStream f = new FileStream("C:\\timeregistrytextstrings.txt", FileMode.Open, FileAccess.Read);
      StreamReader testTxt = new StreamReader(f);

      bool success = false;
      bool IsFileEmpty = true;
      string allRead;
      while (!testTxt.EndOfStream)
      {
        IsFileEmpty = false;
        allRead = testTxt.ReadLine();
        if (allRead == cbxTimeRegistryList.Text)//ExactMatch(cbxTimeRegistryList.Text, allRead))//If the match is found in allRead
        {
          success = true;
        }

      }
      testTxt.Close();
      f.Close();

         
      if (success == false)
          {
          FileStream fwrite = new FileStream("C:\\timeregistrytextstrings.txt", FileMode.Append, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fwrite);
            cbxTimeRegistryList.Items.Add(cbxTimeRegistryList.Text);
            if (IsFileEmpty == false)
            {
              sw.Write("");
            }
            sw.Write(cbxTimeRegistryList.Text + "\r\n");
            sw.Close();
            fwrite.Close();
          }
   
      cbxTimeRegistryList.Text = "";
    }


    private void cbxTimeRegistryList_KeyPress(object sender, KeyPressEventArgs e)
    {
     
      //ComboBox comboBox = (ComboBox)sender;

      //if (Char.IsControl(e.KeyChar))
      //  return;

      //string ToFind = cbxTimeRegistryList.Text.Substring(0, cbxTimeRegistryList.SelectionStart) + e.KeyChar;
      //int Index = cbxTimeRegistryList.FindStringExact(ToFind);

      //if (Index == -1)
      //  Index = cbxTimeRegistryList.FindString(ToFind);

      //if (Index == -1)
      //  return;

      //cbxTimeRegistryList.SelectedIndex = Index;
      //cbxTimeRegistryList.SelectionStart = ToFind.Length;
      //cbxTimeRegistryList.SelectionLength = cbxTimeRegistryList.Text.Length - cbxTimeRegistryList.SelectionStart;

      //e.Handled = true;
      //cbxTimeRegistryList.SelectionStart = cbxTimeRegistryList.Text.Length;


      cbxTimeRegistryList.DroppedDown = true;
      Cursor.Current = Cursors.Default;
   

    }
Avatar billede mjense173 Nybegynder
15. januar 2011 - 03:30 #2
En standard Autocompleteboks i .Net, kan kun lave prefix søgninger.

Dvs. at den kun foreslår ord som starter med det du søger på.

Du kan evt. udvide din autoCompleteStrings med firmanavn-50, eller udvikle din egen tekstboks.

http://www.dreamincode.net/forums/topic/34785-create-an-autocomplete-textbox-control-in-c%23/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester