我知道Windows的
我需要在WinForms中模拟同样的效果。我正在尝试找出必须设置的Windows窗口选项,以达到正确的效果。
Combobox
控件实际上就是一个文本框和列表框粘在一起形成的。我需要在WinForms中模拟同样的效果。我正在尝试找出必须设置的Windows窗口选项,以达到正确的效果。
- 下拉框不能是子窗口,否则它会被剪裁到父窗口的区域内
- 从概念上讲,它必须是一个弹出窗口 - 一个重叠的窗口
- 它可以是一个拥有窗口 - 拥有窗口总是位于其所有者之上。当其所有者被销毁时,系统会自动销毁拥有的窗口。当其所有者最小化时,拥有的窗口会被隐藏。
到目前为止,我做到的最好的是创建一个:
- 无边框的(
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
) - 置顶的(
this.TopMost = true
) - 不在任务栏中显示的窗体(
this.ShowInTaskbar = false
)
这个无边框的置顶窗体包含我的“下拉”控件。当下拉窗体失去焦点时,我“隐藏”我的下拉框:
this.Deactivate += new EventHandler(TheDropDownForm_Deactivate);
void TheDropDownForm_Deactivate(object sender, EventArgs e)
{
...
this.Close();
}
这个混合体的东西还算顺畅...
...除了“下拉”会将焦点从所有者表单中移开。
我的问题是,我的弹出窗口应该具有哪些属性?
但是,当下拉表单失去焦点时,我如何隐藏它-当它无法失去焦点时?
如何在.NET中模拟组合框下拉?
注意:不要将示例截图中的内容与其他内容混淆。我正在问如何在Winforms中创建“下拉”表单-其内容可以与上面的屏幕截图不同: