Таймер проверки Winform самый верхний включен - PullRequest
0 голосов
/ 15 апреля 2019

как я могу сделать таймер цикла, который проверяет, является ли в главной форме topmost.enable ложным, пока метка не видна, а затем устанавливается в 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();
        }
    }

1 Ответ

1 голос
/ 16 апреля 2019

Если вам нужно что-то сделать только при изменении свойства «Enabled» метки, тогда вы можете просто добавить обработчик в свойство «EnabledChanged», например:

public Form1()
{
    InitializeComponent();

    lblPassword.EnabledChanged += new System.EventHandler(this.LblPassword_EnabledChanged);
}

И реализовать обработчик так:

private void LblPassword_EnabledChanged(object sender, EventArgs e)
{
    TopMost = !lblPassword.Enabled;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...