问题描述
我有一个东西,您单击“选项”,它会打开所需的表单“选项”,因此,当您启用“ 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。