Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计时器检查Winform最顶层已启用_C#_Winforms - Fatal编程技术网

C# 计时器检查Winform最顶层已启用

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

我如何制作一个循环计时器来检查主窗体topmost.enable是否为false,直到标签可见,然后在标签停用时设置为true

如果尝试了此代码但不起作用:

 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窗体。为此,我需要定时器来监控