Я знаю, что элемент управления Windows Combobox
- это не что иное, как a Textbox
и ListBox
, склеенные вместе .
Мне нужно смоделировать то же самое в WinForms.я пытаюсь выяснить параметры окна Windows, которые должны быть установлены для достижения надлежащего эффекта.
- раскрывающийся список не может быть дочерним окном -в противном случае оно обрезается до родительской области
- , концептуально это должно быть всплывающее окно - перекрывающееся окно
- это может быть собственное окно - собственное окно всегда находится над своим владельцем в z-порядке.Система автоматически уничтожает собственное окно, когда его владелец уничтожается.Окно, находящееся в собственности, скрыто, когда его владелец свернут.
Лучшее, что мне удалось до сих пор, - это создать
- без полей (
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
) - topmost (
this.TopMost = true
) - форма, которая не отображается на панели задач (
this.ShowInTaskbar = false
)
эта верхняя форма без полей содержит мой элемент управления "раскрывающийся список",я «скрываю» свое раскрывающееся меню, когда раскрывающаяся форма теряет фокус:
this.Deactivate += new EventHandler(TheDropDownForm_Deactivate);
void TheDropDownForm_Deactivate(object sender, EventArgs e)
{
...
this.Close();
}
Этот конгломерат беспорядка работает достаточно хорошо ...
...кроме того, что «выпадающий» отвлекает внимание от формы владельца.
И это мой вопрос, какими свойствами должно обладать мое всплывающее окно?
Но тогда как мне скрыть мою выпадающую форму, когда она теряет фокус - , когда она не может потерять фокус ?
Как сделатья имитирую выпадающий список в .NET?
Примечание: Не путайте то, что вы видите на скриншоте примера с чем-то другим.я спрашиваю, как создать «выпадающую» форму в Winforms - содержимое может отличаться от скриншота выше: