Как показать автозаполнение программно без ввода текста

C # TextBoxAutoCompleteCustomSource имеетList<string>, AutoCompleteMode = Suggest.

Я вижу список, когда набираю букву.

Как отобразить весь список без ввода буквы программно? Это должно быть сделано, пока пользователь нажимает клавишу со стрелкой вниз в TextBox.

Доступен ли Win32 API?

Мое решение

Я уточнил лучшее решение.

ДобавитьListBox Управляй формой и делай ее какVisible = false

int curSelIndex = -1;

Ниже приведенный код будет выполненForm_Load Мероприятие.

txtEmpId.AutoCompleteCustomSource.AddRange(EmpIds.ToArray());
lstAutoComplete.Items.Clear();
lstAutoComplete.Items.AddRange(EmpIds.ToArray());
txtEmpId.KeyDown += (ks, ke) =>
{
    if (!(ke.KeyCode == Keys.Down || 
          ke.KeyCode == Keys.Up || 
          ke.KeyCode == Keys.Enter)) 
    { 
        lstAutoComplete.Visible = false; 
        return; 
    }
    ke.Handled = true;
    if (ke.KeyCode == Keys.Enter)
    {
        if (lstAutoComplete.Visible)
        {
            var str = lstAutoComplete.SelectedItem + "";
            // Process the Selected Item and set to TextBox.
        }
    }
    if (!lstAutoComplete.Visible && txtEmpId.Focused)
    {
        var loc = txtEmpId.Location;
        loc.Y += txtEmpId.Height;
        lstAutoComplete.Location = loc;
        lstAutoComplete.Size = txtEmpId.Size;
        lstAutoComplete.Height = 100;
        lstAutoComplete.SelectedIndex = 0;
        curSelIndex = 0;
        lstAutoComplete.Visible = true;
    }
    else if(lstAutoComplete.Visible && txtEmpId.Focused)
    {
        if (ke.KeyCode == Keys.Down)
        {
            curSelIndex++;
            if (curSelIndex >= lstAutoComplete.Items.Count)
                curSelIndex = lstAutoComplete.Items.Count - 1;
            if (lstAutoComplete.Items.Count > 0)
                lstAutoComplete.SelectedIndex = curSelIndex;
        }
        else if (ke.KeyCode == Keys.Up)
        {
            curSelIndex--;
            if (curSelIndex < 0)
                curSelIndex = 0;
            if (lstAutoComplete.Items.Count > 0)
                lstAutoComplete.SelectedIndex = curSelIndex;
        }
    }
};
txtEmpId.Leave += (ls, le) => lstAutoComplete.Visible = false;

Ответы на вопрос(1)

Ваш ответ на вопрос