C# Winform

C# TIMER 이용한 ALARM

agape93 2021. 1. 21. 20:48

TIMER 이용한 ALARM

 

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    //타이머 시작
    timer1.Enabled = true;
    timer1.Interval = 1000; //1초마다 갱신

    //ComboBox item 추가
    datelist.Items.Add("회의");
    datelist.Items.Add("약속");
    datelist.Items.Add("식사");
    datelist.Items.Add("휴식");
    datelist.Items.Add("퇴근");
    //기본 설정 지정
    datelist.SelectedIndex = 1;
    
}

//추가 버튼
private void btn_add_Click(object sender, EventArgs e)
{
    string date = "";
    if (datelist.SelectedIndex >= 0)
    {
        date = datelist.Items[datelist.SelectedIndex].ToString();
    }
    //입력
    if (maskedTextBox1.Text.Length == 5)
    {
        string list = maskedTextBox1.Text.Substring(0, 5).Trim();
        list = list + ", " + date;
        listBox1.Items.Add(list);
        maskedTextBox1.Clear();
        datelist.SelectedIndex = 1;
        //커서 위치 변경
        maskedTextBox1.Focus();
        maskedTextBox1.SelectionStart = 0;
    }
    //입력을 잘못 했을 경우
    else
    {
        MessageBox.Show("다시 입력해주세요");
        maskedTextBox1.Clear();
        datelist.SelectedIndex = 1;
        //커서 위치 변경
        maskedTextBox1.Focus();
        maskedTextBox1.SelectionStart = 0;
    }
}

//제거 버튼
private void btn_remove_Click(object sender, EventArgs e)
{
    listBox1.Items.Remove(listBox1.SelectedItem);
}


//timer
private void timer1_Tick(object sender, EventArgs e)
{
    ArrayList delinex = new ArrayList();

    //현재 시간 출력
    DateTime date = DateTime.Now;
    label1.Text = $"{date.Hour}시 {date.Minute}분 {date.Second}초";

    //입력한 시간과 현재 시간 비교
    int i = 0;
    foreach (var input_item in listBox1.Items)
    {
        string result = string.Format("{0}", input_item);
        string[] cols = result.Split(',');
        string time = cols[0].Trim();
        string job = cols[1].Trim();
        string hourstr = time.Substring(0, 2).Trim();
        string minstr = time.Substring(3, 2).Trim();
        int hour = int.Parse(hourstr);
        int min = int.Parse(minstr);

        //입력한 시간과 현재 시간이 같을때
        if (date.Hour == hour && date.Minute == min && date.Second == 00)
        {
            if (job == "퇴근")
            {
                MessageBox.Show("퇴근입니다.");
            }
            else
            {
                MessageBox.Show(new Form { TopMost = true }, $"{job} 예정되어 있습니다.~~~ : \r\n현재 : {date.Hour}시 {date.Minute}분 {date.Second}초 입니다.", "Message");
            }
            delinex.Add(i);
        }
        i++;
    }
    

    //지난 일정은 삭제
    if (delinex != null)
    {
        delinex.Reverse();
        foreach (var del in delinex)
        {
            string delstr = string.Format("{0}", del);
            int delint = (int)Convert.ChangeType(del, typeof(int));
            listBox1.Items.RemoveAt(delint);
            delinex.Remove(delstr);

        }
    }
    
}