如何使TopMost出现在我所有的表单上?

问题描述

我有一个东西,您单击“选项”,它会打开所需的表单“选项”,因此,当您启用“ TopMost”时,它会出现在主表单上,而不是设置上,

        {
            if (bunifuiOSSwitch1.Value == true)
            {
                this.TopMost = true;
            }
            else
            {
                this.TopMost = false;
            }
        }

那是我按钮上的代码

解决方法

this.TopMost将执行代码的当前表单(设置表单)设置为TopMost(如果您可能希望其他表单位于最顶层)。这意味着您的设置表单需要访问您想成为最高形式的任何形式:

public class SettingsForm{

  private Form _mainForm;

  public SettingsForm(Form mainForm){  //settings form constructor takes mainform as a parameter
    _mainForm = mainForm;
  }

  void ApplySettingsButtonClick(...)
  {
    _mainForm.TopMost = bunifuiOSSwitch1.Value;
  }
}

然后打开您的设置表单,您可以通过以下方式传递主表单:

void OpenSettingsButon_Click(...){
  new SettingsForm(this).ShowDialog();
}

或者您拥有两种表单都可以访问的共享内容,例如“设置”机制,您的设置表单将设置Properties.Default.Settings.MainfFOrmIsTopMost = true,然后您的main from可以对更改做出反应(也许由事件处理程序处理)并进行设置基于“设置”设置的最高值


但是要小心;无论哪种情况,将主窗体置于最顶层都会使其位于设置窗口的顶部。如果设置窗口是一个对话框,除非它也是TopMost,否则它可能会卡在后面。

如果可以的话,通常应该避免使用TopMost。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...