我正在编写一个UserControl,它有点像下拉列表,基本上是一个文本框,下面弹出一个列表框......
如果控件位于其父窗体的底部,我不希望列表框被窗体底部剪切,所以从我收集的内容我不能将此列表框作为父窗体的子窗口..我需要创建包含列表框的新的无边框表单,并将其显示在正确的位置.
我可以做得很好,问题来自于整理表格的z顺序.我需要这个新表单始终显示在父表单上方.但我不希望这个窗口显示在父窗体上方的任何窗口上方......这就是设置窗体.TopMost会给我.
有没有其他方法可以做到这一点?ComboBoxes如何设法实现这种行为?
谢谢
当您致电时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);
}
}
Run Code Online (Sandbox Code Playgroud)