【问题标题】:TopMost property not workingTopMost 属性不起作用
【发布时间】:2014-05-30 03:18:27
【问题描述】:

我有一个表单,当我选中一个框 (Duplicate #) 时,会弹出一个表单 (CableID_DuplicateView),我希望它保持在顶部,直到取消选中该复选框。然而这并没有发生。

我已将TopMost 属性设置为动态和静态的true;

this.TopMost = true;
this.TopMost = Checkbox.Checked;

但如果我点击前一个表单上的任何内容,它就会被推到后面。

我怎样才能让它保持在顶部?

注意:我希望其他表单仍可在顶部表单下方访问。是的,这是一个 Mdi 应用程序,这对 TopMost 属性有影响吗?

【问题讨论】:

  • 您不能将 MDI 子窗口置于最顶层。如果您无论如何尝试,Winforms 都会忘记抛出异常。只有顶层窗口可以是最顶层的。例如,您的 MDI 父级。没有明显的前进道路,您必须重新考虑您的 UI。将控件停靠在父级中将始终使其可访问。

标签: c# winforms topmost


【解决方案1】:

这适用于我的类似问题:

试试

yourTopForm.TopLevel=true;
yourTopForm.TopMost=true;
yourTopForm.Show(this);

重载的Show(this)函数显示表单是重要的部分。

【讨论】:

  • 我遇到了同样的问题。此解决方案 100% 确定。它就像一个魅力!
【解决方案2】:

MDI 系统中使窗口保持在最上面是不可能的。您可以尝试激活窗口,使它们弹出顶部,但这只会对其他操作造成更大的伤害。我不建议尝试。在MDI 配置中创建一些窗口TopMost 是没有工作的方法。

【讨论】:

    【解决方案3】:

    将您的父表单传递给 Top Most 表单的 Show 方法。

    【讨论】:

    • 我很确定我做到了,你的意思是这样吗? ShowDuplicateView(Menu_View Main_Menu, CableID_CreateView CView)
    • 像这样: var duplicateForm = new DuplicateForm(); duplicateForm.Show(this); //它的父窗体
    • 好的,澄清一下,我的父表单是Menu,而我的子表单CreateView 在选中复选框时调用DuplicateView
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 2011-03-31
    • 2018-11-19
    • 2012-07-23
    • 2016-07-16
    • 2020-01-24
    相关资源
    最近更新 更多