【问题标题】:how to Show MDIChild Form on Top of the MDIParent's Controls如何在 MDIX 父控件之上显示 MDI 子窗体
【发布时间】:2011-11-04 11:05:39
【问题描述】:

我有一个包含许多 ChildForms 的 MDI 父窗体,当我想在父窗体上添加控件时,子窗体出现在控件下,例如我想在 MDIParent 窗体上添加一个组框和一个图片框,但是当我称它出现在这些控件下的子窗体。

frmChildForm1.TopMost=true 也不起作用。

我附上了一张照片以获得更多描述。

我能做什么?!

【问题讨论】:

  • 这是设计使然。您只能设置控件的 Dock 属性来避免这种情况。将其停靠在边缘,以便缩小 MDI 客户区域。
  • 是的,但我想有一个图像作为背景,它不显示,我必须使用图片框,所以我还有类似的问题

标签: winforms visual-studio-2008 c#-3.0 mdichild mdiparent


【解决方案1】:

但我想要一张图片作为背景

可以,你可以设置MDI客户端控件的BackgroundImage属性。唯一的障碍是您不能直接获得对该控件的引用。您必须通过迭代表单的 Controls 集合来找到它。像这样:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        foreach (Control ctl in this.Controls) {
            if (ctl is MdiClient) {
                ctl.BackgroundImage = Properties.Resources.Lighthouse;
                break;
            }
        }
    }
}

Lighthouse 是我作为资源添加的示例图像。将其更改为使用您自己的。另一种常见的技术是订阅该控件的 Paint 事件并绘制您想要的任何内容。渐变是一种常见的选择。

【讨论】:

  • 谢谢!那是我的解决方案:)
  • 它对我有用,但是,我的背景图像从rightbottom 边界重复,为什么会这样?我也将其布局更改为stretch,但仍然是相同的概率foreach (Control ctl in this.Controls) { if (ctl is MdiClient) { ctl.BackgroundImage = Properties.Resources.bg; ctl.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; break; } },就像我所做的那样
  • 使用 BackgroundImageLayout 属性。
  • 你必须点击按钮。
  • 我已经在这里发布了问题stackoverflow.com/questions/19520373/…
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
相关资源
最近更新 更多