代码之家  ›  专栏  ›  技术社区  ›  Mongus Pong

保持一扇窗户在另一扇前面

  •  1
  • Mongus Pong  · 技术社区  · 15 年前

    我正在编写一个用户控件,它的行为有点像一个下拉列表,基本上是一个文本框,下面会弹出一个列表框。。。

    如果控件位于其父窗体的底部,我不希望列表框被窗体底部剪切,因此根据我收集的信息,我不能将此列表框作为父窗体的子窗体。。我需要创建一个包含列表框的新的无边框表单,并将其显示在正确的位置。

    我可以做得很好,问题在于如何整理表单的z顺序。我需要此新表单始终显示在父表单上方。但我不希望此窗口出现在父窗体上方的任何窗口上方。。。这就是setting form.TopMost会给我的。

    还有别的办法吗?组合框如何实现这种行为?

    谢谢

    3 回复  |  直到 15 年前
        1
  •  5
  •   Neil Barnwell    15 年前

    form.Show()

    class MyControl : UserControl
    {
        private DropDownForm form = new DropDownForm();
    
        public MyControl()
        {
            form.FormClosed += dropdownform_closed;
        }
    
        private void MethodThatShowsDropdown()
        {
            form.AddData(GetTheData());
            form.Show(this.Owner); // Or is it "this.Parent"?  I can never remember...
        }
    
        private void dropdownform_closed(object sender, EventArgs e)
        {
            DoSomething(form.SelectedValue);
        }
    }
    
        2
  •  0
  •   jheddings    15 年前

    我不确定它是否适用于您的应用程序,但使用 ShowDialog()

        3
  •  0
  •   csharptest.net    15 年前