c# - 如何让我的所有表单都发生 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
,然后您的主从可以对更改做出反应(可能通过事件处理程序)并根据设置设置 topmost 的值环境
不过要小心;在任何一种情况下,将主窗体设置在最上面都会使其位于设置窗口的顶部。如果设置窗口是一个对话框,它可能会卡在后面,除非它也是 TopMost。
如果可以的话,通常应该避免使用 TopMost。
推荐阅读
- java - 讲解base64图像显示
- reactjs - React useState - FaStar 图标 - 单击以更改和更改回
- python - Django中的名称错误-视图函数中的嵌套函数-保存到数据库
- python - 将基于 exec() 的 Python 代码转换为 iPython API
- angular - 关于 cookie、JWT 和 Web 应用程序
- javascript - ReactJS FilePond - 上传到一个 FilePond 组件会清除同一页面中其他 FilePond 组件中的状态
- java - 在java中使用循环按顺序输出数字
- android - Exoplayer - 以编程方式在运行时更改 exo_playback_control_view 控制器的大小
- flutter - 需要使用 Isolates 来加速我的应用程序中的文件处理
- c++ - 为什么没有按预期找到这个朋友方法?