出现子表单时出现黑色背景

时间:2014-05-07 13:43:27

标签: c# winforms

我正在尝试创建一个类似于网页的下拉菜单,它应该从一个宽大的菜单开始,当点击它时会在它下面显示另一个宽菜单,然后在第二个菜单上点击任何一个键盘显示下拉菜单。

应该以编程方式实现的目标。 enter image description here

然而,我遇到了太多问题,因为我无法通过我的UI达到HTML / CSS可以实现的目标,修复了太多但无法解决这个问题,但首先让我告诉你我是如何创建的菜单,因为它有助于更​​多地解释问题。

我使用MDI父实现了这一点,所以我创建了第一个菜单作为工具条和标签作为链接,与第二个菜单相同,在下拉菜单中,我无法使用工具条下拉按钮,因为设计师给我发了一个带阴影效果的模型并实现了我必须使用图像覆盖表格,总结一下,我目前的问题是

当我点击任何第二个菜单项以显示下拉菜单时,我注意到菜单后面有一个黑色背景,直到它完全加载,当我点击它隐藏它时它再次出现,我怀疑是黑色是形式背景,所以当我测试它时,我给它100%透明度,我发现它显示窗口的桌面而不是黑色。

下拉菜单的代码:

foreach (Form form in Application.OpenForms)
{
    if (form.GetType() == typeof(Form1))
    {
        form.Activate();
        return;
    }
}

Form1 newForm = new Form1();
newForm.MdiParent = this;
newForm.StartPosition = FormStartPosition.Manual;
newForm.Location = new Point(330, 0);
newForm.Show();

以编程方式达成的内容。

enter image description here

1 个答案:

答案 0 :(得分:1)

MDI可能是用于菜单系统的错误技术。

要在菜单系统中显示自定义控件,可以使用ToolStripControlHost和ToolStripDropDown组件来完成:

void toolStripLabel2_MouseDown(object sender, MouseEventArgs e) {
  Control c = new Control();
  c.MinimumSize = new Size(200, 200);      
  c.BackColor = Color.Green;
  ToolStripDropDown td = new ToolStripDropDown();
  td.Padding = Padding.Empty;
  ToolStripControlHost th = new ToolStripControlHost(c);
  th.Margin = Padding.Empty;
  td.Items.Add(th);
  td.Show(this.PointToScreen(new Point(toolStripLabel2.Bounds.Left,
                                       toolStripLabel2.Bounds.Bottom)));
}

下拉列表会显示阴影效果。