C# 使用计时器检测更改

C# 使用计时器检测更改,c#,winforms,C#,Winforms,更新:我添加了代码来显示整个过程,这是我的代码的延续 我的listview中列出了3个项目和一条if语句,该语句说明如果我的子项目处于非活动状态内部代码将生成一个文件。我的问题是,一旦不活动项目再次处于活动状态,我将如何使计时器再次移动 private void Form1_Load(object sender, EventArgs e) { timer2.Enabled = true; } private void running_process() { P

更新:我添加了代码来显示整个过程,这是我的代码的延续

我的listview中列出了3个项目和一条
if
语句,该语句说明如果我的
子项目
处于
非活动状态
内部代码将生成一个文件。我的问题是,一旦
不活动
项目再次处于
活动状态
,我将如何使计时器再次移动

private void Form1_Load(object sender, EventArgs e)
{
    timer2.Enabled = true;
}

    private void running_process()
{

        Process[] processes = Process.GetProcesses("ITWORKSPC152");
        for (int i = 0; i < listView1.Items.Count; i++)
        {
            if (flag == false)
            {
                listView1.Items[i].SubItems.Add("Inactive");
                if(i == listView1.Items.Count - 1)
                    flag = true;
            }
            foreach (Process p in processes)
            {
                if (!listBox1.Items.Contains(listView1.Items[i].Text))
                {
                    listView1.Items[i].SubItems[1].Text = " ";
                    listView1.Items[i].SubItems[1].Text = "Inactive";
                    listView1.Items[i].BackColor = Color.Red;
                }

                if (listView1.Items[i].Text == p.ProcessName)
                {
                    listBox1.Items.Add(p.ProcessName);
                    listView1.Items[i].SubItems[1].Text = "Inactive";
                    for (int j = 0; j < listBox1.Items.Count; j++)
                    {
                        if (listBox1.Items[j].ToString() == listView1.Items[i].Text)
                        {
                            listView1.Items[i].SubItems[1].Text = "Active";
                            listView1.Items[i].BackColor = Color.FromArgb(66, 181, 33);
                            //m_boolIsDown = false;
                        }

                    }
                }
             }
          }
  }

private void InactiveCheck()
{
    for (int i = 0; i < listView1.Items.Count; i++)
    {
        if (listView1.Items[i].SubItems[1].Text == "Inactive")
        {
            richTextBox1.Text = richTextBox1.Text + listView1.Items[i].Text + 
                " was inactive at " + DateTime.Now.ToString("hh':'mm tt") + "\n";
            File.AppendAllText(@"C:\Documents and Settings\pamojica\My Documents\InactiveProgramLogs\" + lbl_date.Text + ".txt", richTextBox1.Text);
            timer3.Enabled = false;
        }
        else
        {
            timer3.Enabled = true;
        }
    }
}
private void timer1_Tick(object sender, EventArgs e)
{
    listBox1.Items.Clear();
    richTextBox1.Clear();
    running_process();
}

private void button2_Click(object sender, EventArgs e)
{
    timer1.Enabled = true;
}
    private void timer3_Tick(object sender, EventArgs e)
    {
        InactiveCheck();
    }

    private void listView1_AfterLabelEdit(object sender, LabelEditEventArgs e)
    {
        for (int i = 0; i < listView1.Items.Count; i++)
        {
            if (listView1.Items[i] == null || listView1.Items.Count == 0)
                return;

            var item = listView1.Items[i];

            if (item.SubItems != null && item.SubItems.Count > 1 && item.SubItems[1].Text == "Inactive")
            {
                richTextBox1.Text = richTextBox1.Text + item.Text + " was inactive at " + DateTime.Now.ToString("hh':'mm tt") + "\n";
                File.AppendAllText(@"C:\Documents and Settings\pamojica\My Documents\InactiveProgramLogs\" + lbl_date.Text + ".txt", richTextBox1.Text);
            }
        }

    }
private void Form1\u加载(对象发送方,事件参数e)
{
timer2.Enabled=true;
}
私有void正在运行_进程()
{
Process[]processs=Process.getprocesss(“ITWORKSPC152”);
对于(int i=0;i1&&item.SubItems[1]。文本==“非活动”)
{
richTextBox1.Text=richTextBox1.Text+item.Text+“在”+DateTime.Now.ToString(“hh':'mm tt”)+“\n”时处于非活动状态;
File.AppendAllText(@“C:\Documents and Settings\pamojica\My Documents\InactiveProgramLogs\”+lbl_date.Text+“.txt”,richTextBox1.Text);
}
}
}
使用
timer3.Stop()
timer3.Start()方法

    private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
    {
        if (e.Item == sender)
        {
            if (e.IsSelected) timer3.Start();
            else timer3.Stop();
        }                        
    }
使用
timer3.Stop()
timer3.Start()方法

    private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
    {
        if (e.Item == sender)
        {
            if (e.IsSelected) timer3.Start();
            else timer3.Stop();
        }                        
    }
使用
timer3.Stop()
timer3.Start()方法

    private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
    {
        if (e.Item == sender)
        {
            if (e.IsSelected) timer3.Start();
            else timer3.Stop();
        }                        
    }
使用
timer3.Stop()
timer3.Start()方法

    private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
    {
        if (e.Item == sender)
        {
            if (e.IsSelected) timer3.Start();
            else timer3.Stop();
        }                        
    }

而不是执行
timer3.Enabled=true
timer3.Enabled=false
使用
timer3.Start()
定时器3.Stop()

滴答声事件中停止计时器
将起作用

private void Form1_Load(object sender, EventArgs e)
{
    timer3.Start();

}

private void InactiveCheck()
{
    for (int i = 0; i < listView1.Items.Count; i++)
    {
        if (listView1.Items[i].SubItems[1].Text == "Inactive")
        {
            richTextBox1.Text = richTextBox1.Text + listView1.Items[i].Text + " was inactive at " + DateTime.Now.ToString("hh':'mm tt") + "\n";
            File.AppendAllText(@"C:\Documents and Settings\pamojica\My Documents\InactiveProgramLogs\" + lbl_date.Text + ".txt", richTextBox1.Text);               
        }
        else
        {
            timer3.Start();
        }
    }
}

private void timer3_Tick(object sender, EventArgs e)
{
    timer3.Stop()
    InactiveCheck();
}
private void Form1\u加载(对象发送方,事件参数e)
{
timer3.Start();
}
private void InactiveCheck()
{
对于(int i=0;i
而不是执行
timer3.Enabled=true
timer3.Enabled=false
使用
timer3.Start()
定时器3.Stop()

滴答声事件中停止计时器
将起作用

private void Form1_Load(object sender, EventArgs e)
{
    timer3.Start();

}

private void InactiveCheck()
{
    for (int i = 0; i < listView1.Items.Count; i++)
    {
        if (listView1.Items[i].SubItems[1].Text == "Inactive")
        {
            richTextBox1.Text = richTextBox1.Text + listView1.Items[i].Text + " was inactive at " + DateTime.Now.ToString("hh':'mm tt") + "\n";
            File.AppendAllText(@"C:\Documents and Settings\pamojica\My Documents\InactiveProgramLogs\" + lbl_date.Text + ".txt", richTextBox1.Text);               
        }
        else
        {
            timer3.Start();
        }
    }
}

private void timer3_Tick(object sender, EventArgs e)
{
    timer3.Stop()
    InactiveCheck();
}
private void Form1\u加载(对象发送方,事件参数e)
{
timer3.Start();
}
private void InactiveCheck()
{
对于(int i=0;i
而不是