private void ShowDropDownFilter() { if (Text.IsNullOrEmpty() && ShowFilter) { FillFilterTextEmpty(); } FilterItemForm.AutoClose = false; if (!FilterItemForm.Visible) { FilterItemForm.Show(this, new Size(DropDownWidth < Width ? Width : DropDownWidth, CalcItemFormHeight())); edit.Focus(); } }
private void Edit_KeyDown(object sender, KeyEventArgs e) { if (ShowFilter) { if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Up) { if (!FilterItemForm.Visible) { ShowDropDownFilter(); } int cnt = filterForm.ListBox.Items.Count; int idx = filterForm.ListBox.SelectedIndex; if (cnt > 0) { if (e.KeyCode == Keys.Down) { if (idx < cnt - 1) { filterForm.ListBox.SelectedIndex++; } } if (e.KeyCode == Keys.Up) { if (idx > 0) { filterForm.ListBox.SelectedIndex--; } } } } else if (e.KeyCode == Keys.Escape) { FilterItemForm.Close(); } else if (e.KeyCode == Keys.Return) { if (FilterItemForm.Visible) { int cnt = filterForm.ListBox.Items.Count; int idx = filterForm.ListBox.SelectedIndex; if (cnt > 0 && idx >= 0 && idx < cnt) { SelectTextChange = true; filterSelectedItem = filterList[idx]; filterSelectedValue = GetItemValue(filterSelectedItem); Text = GetItemText(filterSelectedItem).ToString(); edit.SelectionStart = Text.Length; SelectedValueChanged?.Invoke(this, EventArgs.Empty); SelectTextChange = false; } FilterItemForm.Close(); } else { ShowDropDownFilter(); } } else { base.OnKeyDown(e); } } else { if (e.KeyCode == Keys.Enter) { ShowDropDown(); } else if (e.KeyCode == Keys.Escape) { ItemForm.Close(); } else { base.OnKeyDown(e); } } }