C# 计时器检查Winform最顶层已启用
我如何制作一个循环计时器来检查主窗体topmost.enable是否为false,直到标签可见,然后在标签停用时设置为true 如果尝试了此代码但不起作用:C# 计时器检查Winform最顶层已启用,c#,winforms,C#,Winforms,我如何制作一个循环计时器来检查主窗体topmost.enable是否为false,直到标签可见,然后在标签停用时设置为true 如果尝试了此代码但不起作用: private void InitializeAlive() { alive = new System.Timers.Timer(); alive.Interval = 1000; alive.AutoReset = true; alive.Elapsed += Al
private void InitializeAlive()
{
alive = new System.Timers.Timer();
alive.Interval = 1000;
alive.AutoReset = true;
alive.Elapsed += Alive_Tick;
alive.Start();
}
private void Alive_Tick(object sender, EventArgs e)
{
if (lblPassword.Enabled)
{
this.TopMost = false;
}
else
{
this.TopMost = true;
alive.Dispose();
}
}
private void btnPrint_Click(object sender, EventArgs e)
{
if (txtPassword.Text == pswd)
{
TopMost = false;
webPrintSetting.ShowPageSetupDialog();
InitializeAlive();
}
else
{
btnPrint.Enabled = false;
btnPrint.Visible = false;
lblPassword.Visible = false;
txtPassword.Enabled = false;
txtPassword.Visible = false;
txtPassword.Clear();
}
}
如果只需要在标签的“Enabled”属性更改时执行某些操作,则只需将处理程序添加到“EnabledChanged”属性,如下所示:
public Form1()
{
InitializeComponent();
lblPassword.EnabledChanged += new System.EventHandler(this.LblPassword_EnabledChanged);
}
private void LblPassword_EnabledChanged(object sender, EventArgs e)
{
TopMost = !lblPassword.Enabled;
}
并实现如下处理程序:
public Form1()
{
InitializeComponent();
lblPassword.EnabledChanged += new System.EventHandler(this.LblPassword_EnabledChanged);
}
private void LblPassword_EnabledChanged(object sender, EventArgs e)
{
TopMost = !lblPassword.Enabled;
}
我找到了一个打开/关闭最顶层(在目标进程运行之前关闭)的解决方案
WinForms应该使用WinForm的计时器。永远不要将lblPassword.Enabled设置为true或false。但是您需要为lblPassword.Enabled创建一个if语句。您的意思是这样做的,还是那个if语句假设检查lblPassword.Visible?不,我不需要启用或禁用lblPassword。我需要检查是否启用或禁用打开顶部…好的解决方案,但我需要在验证密码之前。然后试着让某人正确表述问题,否则无法帮助您。。。对不起,我知道。我已经在启用winform topmost的情况下创建了一个函数,其中显示了检查正确密码所需的一些控件(也是lblPassword)。然后必须将winform设置为最顶层禁用状态,直到显示showdialog窗体。为此,我需要定时器来监控