繁体   English   中英

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

[英]Timer check Winform topmost enabled

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

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

 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;
}

我找到了一个打开/关闭最顶层的解决方案(关闭直到目标进程正在运行)。

private Timer check;

public MyForm()
{
InitializeCheck();
}

private void InitializeCheck()
{
check = new Timer();
check.Interval = 5000;
check.Tick += Check_Tick;
check.Enabled = false;
}

private void Check_Tick(object sender, EventArgs e)
{
CheckProgram();
}

private void CheckProgram()
{
Process[] program = rocess.GetProcessesByName("notepad");
if (program.Length == 0)
{
check.Enabled = false;
TopMost = true;
}

private void button1_Click(object sender, EventArgs e)
{
TopMost = false;
check.Enabled = true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM