Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 15
1

Пропущенное сообщение напоминалки

15.10.2019, 09:32. Показов 702. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, я совсем новичок в программировании, это мой первый вопрос на форуме. У меня такая проблема: Пишу программу напоминалка, всё почти готово, только вот не могу понять, если во время достижения времени напоминания компьютер пользователя был выключен, как после того как компьютер снова будет включен сообщить пользователю о том что было пропущено сообщение от напоминалки?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
namespace Напоминалка
{
    public partial class Form1 : Form
    {
        public Form1()
        {          
            InitializeComponent();     
 
                //КОД ДЛЯ ТОГО ЧТОБЫ ЛЕЙБЛ БЫЛ ПРОЗРАЧНЫМ!
            label1.Parent = pictureBox1;
            label1.BackColor = Color.Transparent;
 
            label6.Parent = pictureBox1;
            label6.BackColor = Color.Transparent;
 
            //КОД ДЛЯ СОХРАНЕНИЯ ДАННЫХ ПРОГРАММЫ В ЕЁ СВОЙСТВАХ!
            textBox1.Text = Settings.Default["textBox1"].ToString();
 
            dateTimePicker1.Text = Settings.Default["dateTimePicker1"].ToString();
 
            dateTimePicker2.Text = Settings.Default["dateTimePicker2"].ToString();
 
            button1.Text = Settings.Default["button1"].ToString();            
        }      
 
        //Таймер тик (два раза щёлкаем по таймеру или в свойствах его в молнии выбераем Тик)
        private void Timer1_Tick(object sender, EventArgs e)
        {           
            label1.Text = DateTime.Now.ToLongTimeString();  //Отобрази время на лейбл 1
            label6.Text = DateTime.Now.ToShortDateString(); //Отобрази дату на лейбл 6
 
            if (label1.Text == dateTimePicker1.Text) //Если сейчас то время, которое указанов dateTimePicker1!
                if (label6.Text == dateTimePicker2.Value.ToShortDateString()) //Если сегодня то число, которое указано в dateTimePicker2!
                {//Выведи сообщение поверх всех окон!
                    MessageBox.Show(textBox1.Text, "Напоминание", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
                    
                    //Для обнуления!
                    textBox1.Text = "";
                    dateTimePicker1.Text = "00:00:00";
                    dateTimePicker2.Text = "00:00:00";
 
                    //Кнопка измени свою надпись на!
                    button1.Text = "Отправить";
 
                    //Контролы станьте активными!
                    button1.Enabled = true;
                    textBox1.Enabled = true;
                    dateTimePicker1.Enabled = true;
                    dateTimePicker2.Enabled = true;
 
                    //Для сохранения данных программы в её свойствах!
                    Settings.Default["textBox1"] = textBox1.Text;
                    Settings.Default.Save();
 
                    Settings.Default["dateTimePicker1"] = dateTimePicker1.Text;
                    Settings.Default.Save();
 
                    Settings.Default["dateTimePicker2"] = dateTimePicker2.Text;
                    Settings.Default.Save();
 
                    Settings.Default["button1"] = button1.Text;
                    Settings.Default.Save();
 
                    // Для удаления программы из автозагрузки!
                    const string applicationName = "testProgram";
                    const string pathRegistryKeyStartup =
                                "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
 
                    using (RegistryKey registryKeyStartup =
                                Registry.CurrentUser.OpenSubKey(pathRegistryKeyStartup, true))
                    {
                        registryKeyStartup.DeleteValue(applicationName, false);
                    }                   
                }
        }
       
        private void ОПрограммеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form3 fr3 = new Form3();
            fr3.ShowDialog();
        }
 
        private void ОбАвтореToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form4 fr4 = new Form4();
            fr4.ShowDialog();
        }
        //КОД НАЖАТИЯ КНОПКИ ЗАПУСТИТЬ ТАЙМЕР!
        private void Button1_Click(object sender, EventArgs e)
        {
            //Надпись на кнопке изменись!
            button1.Text = "Отправлено";
 
            //Контролы станьте неактивными!
            button1.Enabled = false;
            textBox1.Enabled = false;
            dateTimePicker1.Enabled = false;
            dateTimePicker2.Enabled = false;
 
            //Для сохранения данных программы в её свойствах!
            Settings.Default["textBox1"] = textBox1.Text; 
            Settings.Default.Save();
 
            Settings.Default["dateTimePicker1"] = dateTimePicker1.Text; 
            Settings.Default.Save();
 
            Settings.Default["dateTimePicker2"] = dateTimePicker2.Text; 
            Settings.Default.Save();
 
            Settings.Default["button1"] = button1.Text;
            Settings.Default.Save();         
 
            //Для установки программы в автозагрузку!
            const string applicationName = "testProgram";
                const string pathRegistryKeyStartup =
                            "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
 
                using (RegistryKey registryKeyStartup =
                Registry.CurrentUser.OpenSubKey(pathRegistryKeyStartup, true))
                {              
                registryKeyStartup.SetValue(
                        applicationName,
                        string.Format(""{0}"", System.Reflection.Assembly.GetExecutingAssembly().Location));
                }        
        }     
        //КОД ЗАГРУЗКИ ФОРМЫ!
        //Два раза щёлкаем по форме!
        private void Form1_Load(object sender, EventArgs e)
        {         
                //Если надпись на кнопке ОТПРАВЛЕНО, то.
                if (button1.Text == "Отправлено")
            {
                this.WindowState = FormWindowState.Minimized;//Форма свернись в панель задач!
                //Контролы станьте не активными!
                button1.Enabled = false;
                textBox1.Enabled = false;
                dateTimePicker1.Enabled = false;
                dateTimePicker2.Enabled = false;
            }
        }
 
        private void SaveResult(object sender, FormClosingEventArgs e)
        {
            //КОД НАЖАТИЯ КНОПКИ ЗАКРЫТЬ!
            //В свойствах формы в молнии выбераем Form closing и пишем там SaveResult затем 2 раза щёлкаем по этой наддписи!
            if (label6.Text == dateTimePicker2.Value.ToShortDateString())//Если сегодня то число, которое указано в dateTimePicker2!
                if (button1.Text == "Отправлено")
                {
                e.Cancel = true;//То форма не закрывайся.
                this.WindowState = FormWindowState.Minimized;//Форма свернись и отправся в панель задач.
                }
            else //Иначе.
            {
                Application.Exit();//Программа выключись!
            }
            else //Иначе.
            {
                Application.Exit();//Программа выключись!
            }
        }
        //КАД НАЖАТИЯ КНОПКИ ОТМЕНИТЬ!
        //Два раза щёлкаем по кнопке Отменить!
        private void Button2_Click(object sender, EventArgs e)
        {
            //Для обнуления!
            textBox1.Text = "";
            dateTimePicker1.Text = "00:00:00";
            dateTimePicker2.Text = "00:00:00";
 
            //Кнопка измени свою надпись на!
            button1.Text = "Отправить";
 
            //Контролы станьте активными!
            button1.Enabled = true;
            textBox1.Enabled = true;
            dateTimePicker1.Enabled = true;
            dateTimePicker2.Enabled = true;
 
 
            //Для сохранения данных программы в её свойствах!
            Settings.Default["textBox1"] = textBox1.Text;
            Settings.Default.Save();
 
            Settings.Default["dateTimePicker1"] = dateTimePicker1.Text;
            Settings.Default.Save();
 
            Settings.Default["dateTimePicker2"] = dateTimePicker2.Text;
            Settings.Default.Save();
 
            Settings.Default["button1"] = button1.Text;
            Settings.Default.Save();
 
            // Для удаления программы из автозагрузки!
            const string applicationName = "testProgram";
            const string pathRegistryKeyStartup =
                        "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
 
            using (RegistryKey registryKeyStartup =
                        Registry.CurrentUser.OpenSubKey(pathRegistryKeyStartup, true))
            {
                registryKeyStartup.DeleteValue(applicationName, false);
            }
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2019, 09:32
Ответы с готовыми решениями:

Время для напоминалки
Всем привет. Задача: Сделать поле при нажатии на которое будет выпадать календарь с часами, где...

Создание своей напоминалки
Всем привет. Попросили сделать напоминалку. Собственно говоря, с проблема состоит в том, что не...

Создание таймера напоминалки в Delphi
подскажите пожалуйста: как сделать запрос на выборку, по определенному столбцу в таблице? хочу...

Исходники напоминалки open-source
Не подскажите, есть ли на просторах инета простой опен-сорс исходник для напоминалки/будильника? ...

2
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,275
Записей в блоге: 9
15.10.2019, 10:30 2
ILIAS3,
1) создать класс MemoryLabel;
2) в MemoryLabel предусмотреть поле AlreadyWtched типа bool;
3) При старте просто проверять это поле.
0
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 15
15.10.2019, 12:00  [ТС] 3
Не могли бы вы показать, как это реализовать на примере моего кода.
0
15.10.2019, 12:00
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.10.2019, 12:00
Помогаю со студенческими работами здесь

Найти пропущенное число
Добрый день В таблице при создании записи автоматически увеличивается номер документа на 1...

Узнать пропущенное число в массиве
Всем доброго времени суток ! Есть Клиент , есть Мастер сервер ! Пишем программу-аналог...

Найти в списке пропущенное число
Здравствуйте, есть задача, суть которой заключается в том, что есть перечень расположенных не по...

нужен алгоритм написания программы напоминалки с использованием базы данных
нужен алгоритм написания программы напоминалки с использованием базы данных,программа должна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Rust или Go? А может C++?
hw_wired 28.01.2025
С каждой новой технологией или методологией появляются новые языки программирования, призванные решать конкретные задачи либо улучшать аспекты производительности и безопасности. Среди множества. . .
Fortran и WinAPI: как создать приложение с графическим интерфейсом
hw_wired 28.01.2025
Fortran — это один из старейших высокоуровневых языков программирования, широко используемый в науке и инженерии уже несколько десятилетий. Его название происходит от "Formula Translation" (перевод. . .
Списки в Haskell
hw_wired 28.01.2025
Haskell является функциональным языком программирования, который отличается лаконичностью синтаксиса и мощными абстракциями. Важным концептом в Haskell являются списки — упорядоченные коллекции. . .
Функции высшего порядка в Haskell
hw_wired 28.01.2025
Haskell – это современный функциональный язык программирования, который получил широкое распространение благодаря своей выразительности и мощным абстракциям. Одной из ключевых особенностей Haskell. . .
Как в цикле обойти все поля объекта в JavaScript
bytestream 28.01.2025
Объекты в JavaScript представляют собой фундаментальные структуры данных, которые позволяют хранить и организовывать связанную информацию в виде пар ключ-значение. Каждый объект можно представить как. . .
Как выбрать строки в DataFrame по значению столбца в Pandas
bytestream 28.01.2025
В области анализа данных библиотека Pandas стала незаменимым инструментом для работы с табличными данными в Python. Эта мощная библиотека предоставляет множество функций для эффективной обработки и. . .
Как сделать перенос строки в Bash
bytestream 28.01.2025
При работе с командной оболочкой Bash разработчики часто сталкиваются с необходимостью форматирования текстового вывода, где ключевую роль играет правильное управление переносами строк. Умение. . .
Поиск подстроки в строке с помощью Bash
bytestream 28.01.2025
Поиск подстроки в строке является одной из важных задач в программировании и обработке текстов. Применение такого поиска можно найти в самых разных областях, от анализа данных до разработки. . .
[golang] 169. Majority Element
alhaos 28.01.2025
Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать. / / . . .
Когда лучше использовать LinkedList вместо ArrayList в Java
bytestream 28.01.2025
При разработке Java-приложений выбор правильной структуры данных играет ключевую роль в обеспечении эффективности и производительности программы. ArrayList и LinkedList являются двумя. . .
Какой ответ HTTP лучше использовать: 403 Forbidden или 401 Unauthorized, когда недостаточно прав
bytestream 28.01.2025
В современной веб-разработке правильная обработка ошибок и точное информирование клиентов о статусе их запросов играют критическую роль в создании надежных и безопасных приложений. Особое внимание. . .
Как получить список всех файлов коммита в Git
bytestream 28.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде и других файлах проекта. В основе работы Git лежит концепция коммитов - снимков. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru