Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2015, 18:36   #1
midiss
Пользователь
 
Регистрация: 08.12.2011
Сообщений: 24
По умолчанию Мигание и изменение цвета GrouppBox

Надо создать мигание GroupBox в течении 15-20 сек, потом чтобы он просто поменял цвет и при этом перестал мигать.
Мигание у меня получилось, а вот с изменением цвета и остановкой мигания не очень.
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace mycontrol
{
    public partial class UserControl1 : UserControl
    {

        public override string Text
        {
            get
            {
                return base.Text;
            }
            set
            {
                base.Text = value;
                groupBox1.Text = value;
            }
        }
        public Form1 _Form1;

        public UserControl1(Form1 Form1)
        {
            InitializeComponent();
            _Form1 = Form1;
        
            timer1.Interval = 2;

            groupBox1.MouseDown += (sender, args) => OnMouseDown(args);
            groupBox1.MouseMove += (sender, args) => OnMouseMove(args);

            pictureBox1.MouseDown += (sender, args) => OnMouseDown(args);
            pictureBox1.MouseMove += (sender, args) => OnMouseMove(args);
        }

        private void button1_Click_2(object sender, EventArgs e)
        {
            this.Hide();
        }

        private void groupBox1_Paint(object sender, PaintEventArgs e)
        {
            Graphics G = e.Graphics;
            G.Clear(Color.FromArgb(0, 0, 0));
          //   G.DrawRectangle(new Pen(Color.FromArgb(100, Color.FromArgb(0, 255, 0))), 7, 7, Width - 10, Height - 10);
            G.DrawString(groupBox1.Text, new Font("Arial", 11), System.Drawing.Brushes.White, new Point(ClientRectangle.X, ClientRectangle.Top));
            groupBox1.BackColor = Color.FromArgb(0, 255, 0);
            timer1.Enabled = true;
        }


        private void timer1_Tick(object sender, EventArgs e)
        {
            Invalidate();
            groupBox1.Refresh();
           // this.Refresh();
            timer1.Enabled = false;

            groupBox1.BackColor = Color.FromArgb(255, 0, 0);
        }

       
    }
}
midiss вне форума Ответить с цитированием
Старый 24.02.2015, 19:13   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Изменение цвета на что?

Выкиньте этот Paint и сделайте что-то типа такого в таймере:

Код:
        private static Color Color1 = Color.FromArgb(0, 255, 0);
        private static Color Color2 = Color.FromArgb(255, 0, 0);

        private void timer1_Tick(object sender, EventArgs e)
        {
            groupBox1.BackColor = groupBox1.BackColor == Color1 ? Color2 : Color1;

            if (прошло 15 сек)
                timer1.Enabled = false;
        }
Насчет смены цвета заголовка GroupBox — либо меняйте ForeColor аналогично если хотите, чтоб и у элементов на нем менялся, либо уберите его и используйте отдельный Label для текста.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.02.2015, 09:29   #3
midiss
Пользователь
 
Регистрация: 08.12.2011
Сообщений: 24
По умолчанию

А как правильно указать (прошло 15 сек)? Просто указать timer1.interval>15?
midiss вне форума Ответить с цитированием
Старый 25.02.2015, 09:38   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут интервал? Это через сколько таймер срабатывает. Он, кстати, не в секундах, а в милисекундах.

Ну по разному можно. Можно просто складывать интервалы в какую-то переменную (sum += timer1.Interval каждый Tick), можно при запуске запомнить время и проверять сколько прошло (DateTime.Now - время_запуска).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 25.02.2015, 09:43   #5
midiss
Пользователь
 
Регистрация: 08.12.2011
Сообщений: 24
По умолчанию

Спасибо за ответ, но уже вопрос решен. Ваша помощь была кстати
midiss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цвета XFR Microsoft Office Excel 6 28.11.2010 13:32
изменение цвета MaXoN66613 Помощь студентам 2 02.06.2010 18:56
Изменение цвета girz Общие вопросы Delphi 6 30.05.2009 13:43
БД + изменение цвета TDBCheckbox chel83 Помощь студентам 1 27.02.2009 11:58
Изменение цвета Artem Общие вопросы Delphi 5 12.07.2007 09:07