Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
4 / 4 / 4
Регистрация: 29.11.2014
Сообщений: 201

Отслеживание нажатия кнопки на контроле

18.10.2016, 19:19. Показов 932. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.Сделал контрол что то типа трекбара для плеера.
Кликните здесь для просмотра всего текста
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
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;
using System.Drawing.Drawing2D;
namespace CustomSlider
{
    public partial class Slider : UserControl
    {
        public Slider()
        {
           
            InitializeComponent();
            this.ForeColor = SystemColors.Highlight;
        }
        protected float percent = 0.0f;
        protected float maximumValue = 0.0f;
        public float Value
        {
            get
            {
                return percent;
            }
            set
            {
 
                if (value < 0) value = 0;
                //else if (value > 100) value = 0;
                percent = value;
                this.Invalidate();
            }
        }
        public float Maximum
        {
            get
            {
                return maximumValue;
            }
            set
            {
                maximumValue = value;
                this.Invalidate();
            }
        }
        
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            Brush br = new SolidBrush(this.ForeColor);
            LinearGradientBrush lg = new LinearGradientBrush(new Rectangle(0, 0, this.Width, this.Height),Color.Blue, Color.Blue, LinearGradientMode.ForwardDiagonal);
            int width = (int)((percent / maximumValue) * this.Width);
            e.Graphics.FillRectangle(br, 0, 0, width, this.Height);
            e.Graphics.FillRectangle(lg, 0, 0, width, this.Height);
            br.Dispose();lg.Dispose();
        }
    }
}

Он постипенно заполняется синим по мере воспроизведения видео.
Скриншот прилагается.
Я хочу что бы при нажатии в конец этой полоски видео перематывалось на то значение этого контрола которое соответствует значению области в которую я нажал.
На скриншоте я обвел этот контролл.
Если я верно понимаю то нажатие отслеживать надо через
C#
1
2
3
4
private void sliderTime_MouseDown(object sender, MouseEventArgs e)
        {
 
        }
но как именно определить в какую точку я ткнул не пойму.
Подскажите
Миниатюры
Отслеживание нажатия кнопки на контроле  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.10.2016, 19:19
Ответы с готовыми решениями:

Событие нажатия кнопки мыши в Юзер Контроле
Есть output : UserControl, подписка на событие внутри контрола, this.Click += new System.EventHandler(this.Output_Click); ... ...

Отслеживание нажатия кнопки на форме.
Добрый день. Вот столкнулся с такой проблемой. Вопрос прост: Как отследить событие нажатия кнопки на форме и ,допустим, вывести...

Отслеживание нажатия кнопки на панели
На панели расположено 94 кнопки. Подскажите, пожалуйста, как отследить нажатие каждой из них не используя свойство button_Click

4
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
18.10.2016, 20:58
В MouseEventArgs есть свойство X, которое даст тебе горизонтальную координату относительно левого края контрола. Разделив ширину контрола на эту координату, ты получишь процент. Поскольку и ширина и координата представляются типом int, то делить нужно, приведя одно из значений к float
Я бы наследовался от ProgressBar и переопределил OnPaintBackground
0
4 / 4 / 4
Регистрация: 29.11.2014
Сообщений: 201
19.10.2016, 15:29  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
Я бы наследовался от ProgressBar и переопределил OnPaintBackground
Почему.Что изменится?
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
19.10.2016, 15:40
Цитата Сообщение от Ascolon Посмотреть сообщение
Почему.Что изменится?
А почему оно должно изменится при клике на Ваш контрол?
При клике на контрол Вы должны вычислить время (для видео) передать это время во "вне" (например через событие) и только после того как ваш плеер установит нужное врем на видео и сгенерирует событие Ваш контрол должет отрисовать это новое время, ну точнее размер полоски которому оно соответствует. Думаю как то так - поправте если что.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
19.10.2016, 17:36
Цитата Сообщение от Ascolon Посмотреть сообщение
Почему.Что изменится?
Там уже есть свойства минимума и максимума. Есть события на изменение значения. Ну и вообще хорошим тоном считается наследование от класса, в котором большинство функций уже реализовано
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2016, 17:36
Помогаю со студенческими работами здесь

Отслеживание события нажатия кнопки на форме
Пишу программу - тестер для студентов (заодно выслушаю критику по коду) Есть xml-файлик с вопросами и вариантами ответов, а так же...

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

Можно ли создать свое событие обработки нажатия клавиши на контроле?
Здравствуйте форумчане, создал собственный контрол &quot;MyControl&quot;, подскажите пожалуйста возможно ли в C# создать свое событие обработки...

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

Отслеживание нажатия кнопки
В приложении присутствует две кнопки и один долгий цикл. Нужно ли отслеживать нажатие кнопки при выполнении цикла или андроид сам прервет...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru