Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
leoniduak
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 37
1

Оптимизация кода

17.07.2017, 20:28. Просмотров 387. Ответов 4
Метки нет (Все метки)

Всем привет написал простую программу, в которой две кнопки запускают / останавливают два таймера.
Вопрос как можно оптимизировать код? как не создавать, например, 2 разных таймера и 2 разных метода которые почти одинаковые. Пробовал как то применить перегрузку методов, но что то не выходит
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Threating_My_Version
{
    public partial class Form1 : Form
    {
        int increase;
       
        public Form1()
        {
            InitializeComponent();
            BackColor = Color.Aquamarine;
        }
 
        private void btn_left_Click(object sender, EventArgs e)
        {
            Off_On_Left();
        }
 
        private void btn_right_Click(object sender, EventArgs e)
        {
            Off_On_Right();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            increase++;
           
            label_left.Text = increase.ToString();
        }
 
        private void timer2_Tick(object sender, EventArgs e)
        {
            increase++;
            label_right.Text = increase.ToString();
        }
 
        public void Off_On_Left()
        {
            timer1.Enabled = !timer1.Enabled;
        }
 
        public void Off_On_Right()
        {
            timer2.Enabled = !timer2.Enabled;
        }       
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2017, 20:28
Ответы с готовыми решениями:

Оптимизация кода
Добрый вечер, требуется проверка нескольких полей на пустоту, можно ли как то всю эту проверку...

Оптимизация кода
Здравствуйте господа. Помогите привести свой ГК к божескому виду. Если вкратце: На форме есть...

Оптимизация кода
Есть код, который проверяет дерево на связность и говорит, будет ли эта фигура деревом если удалить...

Оптимизация кода(?)
В общем суть: программа считывает txt файл и записывает его в таблицу на SQL сервере. В txt файле...

Оптимизация кода
Здравствуйте, заранее прошу прощения за столь неординарный вопрос, но вот есть задание "Реализовать...

4
ViterAlex
6932 / 3875 / 1571
Регистрация: 11.02.2013
Сообщений: 8,443
Завершенные тесты: 3
17.07.2017, 22:39 2
Цитата Сообщение от leoniduak Посмотреть сообщение
как не создавать, например, 2 разных таймера и 2 разных метода которые почти одинаковые
Очень правильный ход мыслей. Можно объединить в юзерконтрол кнопку и таймер. Сделать у этого контрола свойство Increase и событие Tick. Но это громоздко и куча ненужного кода.
Проще дополнить класс кнопки таймером:
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
public class ButtonWithTimer : Button
{
    private Timer _timer = new Timer() { Interval = 500 };
    public int Increase { get; set; }
 
    public int Interval
    {
        get
        {
            return _timer.Interval;
        }
        set
        {
            _timer.Interval = value;
        }
    }
 
    public event EventHandler Tick;
 
    protected override void OnClick(EventArgs e)
    {
        base.OnClick(e);
        _timer.Tick -= _timer_Tick;
        _timer.Tick += _timer_Tick;
        _timer.Enabled = !_timer.Enabled;
    }
 
    private void _timer_Tick(object sender, EventArgs e)
    {
        Increase++;
        OnTick();
    }
 
    protected virtual void OnTick()
    {
        Tick?.Invoke(this, EventArgs.Empty);
    }
}
Теперь каждая кнопка при нажатии будет запускать или останавливать таймер, а таймер при каждом тике будет делать инкремент и вызывать событие Tick, но уже у нашей кнопки. В принципе, такое бинарное поведение подводит к использованию CheckBox {Appearance = Appearance.Button}
1
leoniduak
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 37
19.07.2017, 10:12  [ТС] 3
Спасибо,
А что значит этот код ?
C#
1
 Tick?.Invoke(this, EventArgs.Empty);
0
ViterAlex
6932 / 3875 / 1571
Регистрация: 11.02.2013
Сообщений: 8,443
Завершенные тесты: 3
19.07.2017, 10:18 4
Цитата Сообщение от leoniduak Посмотреть сообщение
А что значит этот код ?
null-оператор. Это значит, что если на событие подписан метод, то вызвать этот метод с данными параметрами. Можно записать более развёрнуто:
C#
1
2
3
var handle = Tick;
if (handle != null)
  handle.Invoke(this, EventArgs.Empty);
1
leoniduak
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 37
19.07.2017, 10:37  [ТС] 5
А, все. Понял)
0
19.07.2017, 10:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2017, 10:37

Оптимизация кода на C#
Здравствуйте уважаемые господа. Использую WinForms, webbrowser. Написал программу, всё...

Оптимизация кода(Наблюдатель)
Здравствуйте, хотел задаться таким неординарным вопросом. Есть задание(фото присутствует) смысл в...

Оптимизация кода. Авторизация в программе
Помогите оптимизировать код убрать все лишнее может можно это все сделать по легче... private...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru