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

Простые классы

14.02.2017, 16:16. Показов 1126. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток

Уже не первый раз пишу Вам, и вы каждый раз мне помогаете. Я очень Вам благодарна

На этот раз у меня возник вопрос с простейшими классами. Задача у меня такая: создать часы(фактически, это просто строка, значения которой можно менять), с возможностью изменения как отдельных параметров(часов, минут, секунд), так и всего вместе. Предусмотреть исключения.

Проблема в том, что, к примеру: изначально у меня стоит время 0:0:0. я задаю время все сразу 12:12:12, и нажимаю на кнопку "показать время", по идее, должно было показать 12:12:12, но показывает 0:0:0. Или же я меняю только часы на 12, у меня выводится 12:0:0, потому что это прописано в форме, но потом я меняю минуты на 12, а выводится 0:12:0, ну и если нажму "вывести время", то выведет все так же 0:0:0, а должно 12:12:0.

Надеюсь на вашу помощь.

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
//Class1.cs
 
namespace LW2_S2_
{
    class TDateTim
    {
        public int hour;
        public int minute;
        public int second;
    
 
        public void chasy(int r)
        {
 
            
            if (r <= 23 & r >= 0)
            {
                hour = r;
            }
            else { MessageBox.Show("Значение введено некорректно!"); }
        }
 
 
        public void minuti(int t)
        {
            
            
 
            if (t <= 59 & t >= 0)
            {
 
                minute = t;
               
            }
            else { MessageBox.Show("Значение введено некорректно!"); }
        }
 
        public void secundi(int y)
        {
 
            
            
            if (y >= 0 & y <= 59)
            {
                second = y;
                Console.WriteLine("Новое время" + ":" + " " + hour + ":" + minute + ":" + second);
            }
            else { MessageBox.Show("Значение введено некорректно!"); }
        }
    }
}
 
// Form.cs. 
namespace LW2_S2_
{
    public partial class Form1 : Form
    {
        TDateTim dat1 = new TDateTim();
        public Form1()
        {
            InitializeComponent();
        }
        
 
        private void button2_Click(object sender, EventArgs e) // Показать время
        {
            
            listBox1.Items.Add(dat1.hour + ":" + dat1.minute + ":" + dat1.second);
        }
 
        private void button4_Click(object sender, EventArgs e) // Изменить часы
        {
            dat1.chasy(Convert.ToInt32(textBox3.Text));
 
            listBox1.Items.Add(("Новое время" + ":" + " " + Convert.ToString(dat1.hour) + ":" + Convert.ToString(dat1.minute)
                + ":" + Convert.ToString(dat1.second)));
            
        }
 
        private void button5_Click(object sender, EventArgs e) // Изменить минуты
        {
 
            dat1.minuti(Convert.ToInt32(textBox4.Text));
 
            listBox1.Items.Add(("Новое время" + ":" + " " + Convert.ToString(dat1.hour) + ":" + Convert.ToString(dat1.minute)
              + ":" + Convert.ToString(dat1.second)));
 
        }
 
        private void button1_Click_1(object sender, EventArgs e) // Изменить все время сразу
        {
            dat1.hour = Convert.ToInt32(textBox1.Text);
            dat1.minute = Convert.ToInt32(textBox6.Text);
            dat1.second = Convert.ToInt32(textBox2.Text);
 
            listBox1.Items.Add(("Новое время" + ":" + " " + Convert.ToString(dat1.hour) + ":" + Convert.ToString(dat1.minute)
             + ":" + Convert.ToString(dat1.second)));
        }
 
        private void button6_Click(object sender, EventArgs e) // Изменить секунды
        {
            dat1.secundi(Convert.ToInt16(textBox5.Text));
            listBox1.Items.Add(("Новое время" + ":" + " " + Convert.ToString(dat1.hour) + ":" + Convert.ToString(dat1.minute)
              + ":" + Convert.ToString(dat1.second)));
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2017, 16:16
Ответы с готовыми решениями:

Структуры данных, коллекции и классы-прототипы. Библиотечные классы коллекций
Ребят в чём ошибки? Нужно чтобы добавляло поля... которые я создал... далее вот продолжение самого задания Изменить приложение,...

Проверка чисел на простые и если они простые просуммировать их
Нужно написать алгоритм который бы делал проверку на простые числа и потом их суммировал.Язык c# Сумма простых чисел(до 10) это 2 +3 +5...

Простые классы.
Помогите пожалуйста решить задачку на простые классы: Создать класс Payment (зарплата). В классе должны быть представлены поля:...

8
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
14.02.2017, 16:46
Не могу сказать наверняка... Сложно понять без проекта целиком что и куда Вы вводите. Смею предположить, что проблема в преобразовании типов. Попробуйте вместо текстбоксов использовать для ввода значений контрол numericUpDown. Только в Вашем классе измените тип данных на decimal. Тогда не нужно будет приводить типы и, скорее всего, ошибки исчезнут. И на будущее... Используйте для преобразования строки в число функцию Parse, а не Convert. (Int.Parse(str), Double.Parse(str) и т.п.)
1
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
14.02.2017, 17:14
всё просто. вы напрочь запутались в том, что из textbox1 textbox2 textbox3 textbox4 textbox5 textbox6 есть часы, минуты, секунды, а так же запутались в кнопках.
Нас вы запутали обработчиками кнопок, судя по им у вас есть button1_1 button2 button4 button5 button6. куда делась третья и что стало с первой непонятно.

давайте имена контролам, которые размещаете на форме, и всё сразу станет проще, как и для вас, так и для нас.
1
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
14.02.2017, 17:31
Честно говоря не понял где тут вообще ошибка?
может вы в своих контролах запутались?)
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
14.02.2017, 17:40
Лучший ответ Сообщение было отмечено SomeOneGirl как решение

Решение

Цитата Сообщение от Spectral-Owl Посмотреть сообщение
всё просто. вы напрочь запутались
Да, именно так и есть!
SomeOneGirl, Ваша программа работает, но, по всей видимости, Вы сами не очень хорошо понимаете логику ее работы! Вот смотрите:
Цитата Сообщение от SomeOneGirl Посмотреть сообщение
я задаю время все сразу 12:12:12, и нажимаю на кнопку "показать время"
У Вас в обработчике "показать время" используются значения которые находятся в переменных класса! Те значения, которые введены в текстбоксы не учитываются! Если сначала нажать кнопку "установить все время", а потом "показать время" все срабатывает!
Далее...
Цитата Сообщение от SomeOneGirl Посмотреть сообщение
Или же я меняю только часы на 12, у меня выводится 12:0:0, потому что это прописано в форме, но потом я меняю минуты на 12, а выводится 0:12:0, ну и если нажму "вывести время", то выведет все так же 0:0:0, а должно 12:12:0.
У Вас текстбоксы дублируются! В разных случаях значения берутся то из одного, то из другого! Соответственно, при попытке изменения какого то значения, не факт, что программа прочитает тот текстбокс в который вы это значени ввели! Вот и все!
Так что полностью согласен с высказываением Spectral-Owl:
Цитата Сообщение от Spectral-Owl Посмотреть сообщение
давайте имена контролам, которые размещаете на форме, и всё сразу станет проще, как и для вас, так и для нас
1
1 / 1 / 0
Регистрация: 20.11.2016
Сообщений: 19
14.02.2017, 17:54  [ТС]
Спасибо, что подсказали такую приятную функцию, как Parse и контрол numericUpDown. В дальнейшем буду пользоваться этим

Добавлено через 3 минуты
Спасибо вам большое! Заново создала все, переделала код(при этом, ничего не меня в самом алгоритме), и все заработало!
И правда...сама, оказывается, запуталась в контрола

Вот, как сразу красиво стало)

Только я вот не совсем поняла, как можно изменить имя метода ?
ну, не button(число)_Click, а, к примеру, изменение_времени...

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
namespace LW2_S2_
{
    public partial class Form1 : Form
    {
        TDateTim dat1 = new TDateTim();
        public Form1()
        {
            InitializeComponent();
        }
        
 
        private void button1_Click(object sender, EventArgs e)
        {
            dat1.chasy(int.Parse(textBox1.Text));
 
 
            listBox1.Items.Add(("Новое время" + ":" + " " + Convert.ToString(dat1.hour) + ":" + Convert.ToString(dat1.minute)
                + ":" + Convert.ToString(dat1.second)));
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            dat1.minuti(int.Parse(textBox2.Text));
 
            listBox1.Items.Add(("Новое время" + ":" + " " + Convert.ToString(dat1.hour) + ":" + Convert.ToString(dat1.minute)
            + ":" + Convert.ToString(dat1.second)));
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            dat1.secundi(int.Parse(textBox3.Text));
 
            listBox1.Items.Add(("Новое время" + ":" + " " + Convert.ToString(dat1.hour) + ":" + Convert.ToString(dat1.minute)
            + ":" + Convert.ToString(dat1.second)));
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            dat1.hour = int.Parse(textBox4.Text);
            dat1.minute = int.Parse(textBox5.Text);
            dat1.second = int.Parse(textBox6.Text);
 
            listBox1.Items.Add(("Новое время" + ":" + " " + Convert.ToString(dat1.hour) + ":" + Convert.ToString(dat1.minute)
             + ":" + Convert.ToString(dat1.second)));
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(dat1.hour + ":" + dat1.minute + ":" + dat1.second);
        }
    }
}
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
14.02.2017, 18:55
Цитата Сообщение от SomeOneGirl Посмотреть сообщение
как можно изменить имя метода ?
ну, не button(число)_Click, а, к примеру, изменение_времени...
Ну вот так просто и замените имя функции button5_Click на изменение_времени. После этого студия должна предложить переименовать ее во всех остальных местах, где она используется. Единственное, не стоит использовать в коде кириллицу. В идеале, нужно использовать слова на английском. Ну а, в крайнем случае, писать транслитом.
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
15.02.2017, 08:42
Цитата Сообщение от SomeOneGirl Посмотреть сообщение
Только я вот не совсем поняла, как можно изменить имя метода ?
ну, не button(число)_Click, а, к примеру, изменение_времени...
а зачем? если вам нужен метод, который будет устанавливать часы, и кнопка, которая будет выполнять данный метод, то при имени кнопки btnSetTime, имя метода автоматически будет btnSetTime_Click(), и всё будет понятно.
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
15.02.2017, 11:22
Цитата Сообщение от Spectral-Owl Посмотреть сообщение
а зачем?
По всей видимости, дело в том, что она переименовала уже существующие кнопки, а имена обработчиков так и остались прежними.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2017, 11:22
Помогаю со студенческими работами здесь

Простые классы. Вывод ответа
Добрый день! Подскажите пожалуйста, что не так в программе? У меня не получается ввести все квартиры, стоимость которых не превышает...

Простые Классы (сложение чисел в восьмеричной системе)
Разработать класс, содержащий два члена (назовем их first, second), и следующие методы: – ввод с клавиатуры Read; – вывод на экран...

Абстрактный класс, интерфейсы или простые классы с иерархией ?
Понять кое-что из ОПП 1-й Вопрос: Есть описание абстрактного класса abstract class HeroFactory { public abstract Movement...

Разложить число на простые множители, определить функцию, распознающую простые числа
Помогите, пожалуйста с программой. Разложить натуральное число n на простые множители. Определить функцию, распознающую простые числа в...

Как научиться создавать на C++ простые приложения (очень простые игры)?
Помогите, я хочу научится создавать какието для начала очень простые игры, приложения. но я вооще ничего не знаю :wall: не знаю с чего...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru