如何制作 TopMost 拨动开关
Posted
技术标签:
【中文标题】如何制作 TopMost 拨动开关【英文标题】:How to make TopMost toggle switch 【发布时间】:2020-10-18 00:29:37 【问题描述】:您好,我正在尝试制作 TopMost 切换开关,代码如下: private void bunifuiosSwitch1_OnValueChange(object sender, EventArgs e)
private void bunifuiOSSwitch1_OnValueChange(object sender, EventArgs e)
Main main = new Main();
if(bunifuiOSSwitch1.Value == true)
main.TopMost = true;
else
main.TopMost = false;
起初它在切换到 true 时工作,在切换到 false 时工作,但是当我尝试重新切换它时它没有工作,之后我尝试再次更改代码,但也没有用...... 现在它甚至不是 TopMost。
【问题讨论】:
每次切换都会创建一个新的、不同的Main
...因此您将永远无法更改现有Main
的状态。将声明和创建上移一个级别(在事件处理程序之外)。您必须进行一些额外检查,以确保 Main
处于正确显示状态。
你的意思是 Main main = new Main():?如果是,我应该使用 Windows 窗体还是使用 Main?我是 C# 新手
Main 是一种形式...不是吗?!我不明白你最后的评论/问题。
是的 Main 是我要制作 TopMost 的表格
但是这段代码在 Main 里面吗?您是否要让当前表单(即 Main)切换其最顶层的属性?...或者您是否尝试显示第二个表单并切换它?
【参考方案1】:
您需要做的是将对 Main 的引用传递到您的设置表单中。一种方法是调用Show()
或ShowDialog()
:
// ... in Form Main ...
private void button1_Click(object sender, EventArgs e)
Settings settings = new Settings();
settings.Show(this); // pass in this instance of Main as the "owner" of settings
然后,在“设置”中,您可以将 .Owner
属性转换回 Main
类型并对其执行操作:
// ... in Settings Form ...
private void bunifuiOSSwitch1_OnValueChange(object sender, EventArgs e)
if (this.Owner!=null && this.Owner is Main)
Main main = (Main)this.Owner;
main.TopMost = (bunifuiOSSwitch1.Value == true);
【讨论】:
谢谢我去试试以上是关于如何制作 TopMost 拨动开关的主要内容,如果未能解决你的问题,请参考以下文章