簡體   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