C # раскрывающийся список под текстовым полем, как комбобокс - PullRequest
0 голосов
/ 23 сентября 2019

Я много раз пытался получить список под текстовым полем, но когда я перемещаю курсор в текстовом поле, и я нажимаю f1, так что после этого мне нужно получить список под текстовым полем.Пример: после выставления счета при вводе имени клиента в текстовом поле должен отображаться раскрывающийся список предыдущих записей.

private void text1_KeyPress(object sender, KeyPressEventArguments e)
{
   if (e.KeyChar == (char)Keys.G)
   {
       Form searchForm = new Form();
       searchForm.Show();
   }
   if (e.KeyChar == 13)
   {
       MessageBox.Show("Enter key pressed");
   }
} 

Я использую C # в visual studio.

1 Ответ

0 голосов
/ 23 сентября 2019

Если вы хотите, чтобы MySearchForm отображалось под элементом управления (TextBox в вашем случае):

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e) {
  if (e.KeyChar == 'G') {
    e.Handled = true;

    // We compute global coordinates that corresponds local ones {0, TextBox1.Height} 
    Point at = (sender as Control).PointToScreen(new Point(0, (sender as Control).Height));

    MySearchForm form = new MySearchForm() {
      StartPosition = FormStartPosition.Manual,
      Location = at,
    };

    // or form.ShowDialog();
    form.Show();
    ...
 }

  ...
}

Возможно, вы захотите разработать создание формы: давайте посмотрим, есть ли у нас открытый экземпляри, если мы это сделаем, переместите его:

MySearchForm form = Application
  .OpenForms
  .OfType<MySearchForm>()
  .LastOrDefault(); 

if (null == form) {
  form = new MySearchForm() {
    StartPosition = FormStartPosition.Manual,
    Location = at,
  };

  form.Show();
}
else {
  form.WindowState = FormWindowState.Normal;
  form.BringToFront();
  form.Location = at;

  if (form.CanFocus)
    form.Focus();   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...