我正在编写一个 UserControl,它的作用有点像下拉列表,基本上是一个文本框,下面会弹出一个列表框...
如果控件位于其父窗体的底部,我不希望列表框被窗体底部剪裁,所以据我所知,我不能只将此列表框作为父窗体的子项。我需要创建一个包含列表框的新无边框表单并将其显示在正确的位置。
我可以做到这一点,问题在于整理表格的 z 顺序。我需要这个新表单始终显示在父表单上方。但我不希望此窗口出现在父窗体上方的任何窗口上方...这是设置 form.TopMost 会给我的。
还有其他方法吗? ComboBox 如何实现这种行为?
谢谢
最佳答案
当您调用 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);
}
}
关于c# - 将一个窗口放在另一个窗口前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1729662/