private void TBsearch_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Down: updateSelectedIndex(selectedIndex + 1); break; case Keys.Up: updateSelectedIndex(selectedIndex - 1); break; case Keys.Enter: var code = controls[selectedIndex].Code; ParentForm.Hide(); KeyHandler.sendString(UTF8Helper.hexStringToLetter(code)); break; case Keys.Escape: ParentForm.Hide(); break; default: break; } }
private void search() { List <ControlSearch> controls = new List <ControlSearch>(); string searchStr = TBsearch.Text; if (searchStr.Length == 0) { // don't change order on empty string (and avoid divions by 0 error) return; } foreach (var control in FLPlist.Controls) { if (control is EditWordRowControl row) { double score = row.Names.Split(';').Min(name => Helpers.LevenshteinDistance.Compute(name, searchStr) / (double)searchStr.Length); if (UTF8Helper.hexStringToLetter(row.Code) == searchStr) { score = 0; } controls.Add(new ControlSearch() { score = score, control = row }); } } controls.Sort((a, b) => { if (a.score == b.score) { return(0); } else if (a.score > b.score) { return(1); } else { return(-1); } }); int index = 0; foreach (var control in controls) { FLPlist.Controls.SetChildIndex(control.control, index); index++; } }
public void updateLetter() { string code = TBcode.Text; try { Lletter.Text = UTF8Helper.hexStringToLetter(code); } catch (Exception ex) { if (code.Length > 0) { byte[] bytes = Encoding.UTF8.GetBytes(code.Substring(0, 1)); string hex = BitConverter.ToString(bytes).Replace("-", ""); TBcode.Text = hex; } } }