Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
16 / 16 / 3
Регистрация: 06.06.2009
Сообщений: 50

Создание событий для ScrollBar'a

06.06.2009, 15:27. Показов 5629. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте!

В зависимости от числа N вводимого пользователем создается N скролбаров. Хочется, чтобы изменение ползунка каждого скроллбара как-то отражалось(допустим в соответствующем label - е). Я так понимаю, надо использовать обработчиков события...Так, как событие lines[i].Scroll (я использовал массив lines скроллбаров, чтобы можно было обратиться к ним по значению i), то обработчик должен быть типа ScrollEventHandler(хотя я может что-то не понимаю), но как тогда мне передать параметр i в обработчик, чтобы значение поменялось у соответствующего labels[i]?

запутался с созданием собственного обработчика...Помогите, не сочтите за труд!))

PS.Просьба не пинать, с языком знаком недавно, а решение нужно в ооочень короткие сроки.
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2009, 15:27
Ответы с готовыми решениями:

Создание событий для Picture Box
как создать события нажатия клавиши мыши для динамический созданных PictureBox, имя боксов заранее не известно

Создание событий для массива элементов PictureBox
Добрый вечер. Подскажите как в С# можно прописать событие клика на элемент PictureBox. private static PictureBox mas1 = new PictureBox;

Создание событий CheckChanged для динамически сохданных RadioButton
Здравствуйте! У меня есть массив данных, в зависимости от того какой элемент массива выбран, рисуеся соответственное кол-во RadioВutton'ов....

8
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
06.06.2009, 15:32
приведите код создания scrollbar-ов помогу вам.
0
16 / 16 / 3
Регистрация: 06.06.2009
Сообщений: 50
06.06.2009, 15:40  [ТС]
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
//это код формы типа Lines, которая генерируется первой формой Form1
 
public static int cols_num;
public static VScrollBar[] lines;
public static Label[] labels;
 
 
public void addLines()
        {
            lines = new VScrollBar[cols_num]; 
 
            int x = 20, y = 100;            
 
            for (int i = 0; i < cols_num; i++)
            {
                lines[i] = new VScrollBar();
                lines[i].Location = new Point(x, y);               
                x+=40;
                this.Controls.Add(lines[i]);
                /*Здесь собственно вся загвоздка...перепробовал много)))
                 как видите последнее - использование анонимок...
                lines[i].Scroll += delegate() { scrollAction(lines[i],new MyEventArgs(i)); };
                */
            }
        }
0
 Аватар для Veyron
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
06.06.2009, 15:40
Вы имели ввиду TrackBar или ScrollBar? Если да, то какая версия у Вас VS? компонента ScrollBar в Visual Studio 2008 я не нашел...(он может быть как составляющая TextBox, RichTextBox итд)

ЗЫ. А всё понял
0
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
06.06.2009, 15:53
C#
1
2
3
4
5
6
7
8
foreach(VScrollBar vs in lines)
{
vs.Scroll += new System.Windows.Forms.ScrollEventHandler(vs_Scroll);
}
private void vs_scroll(object sender, ScrollEventArgs e)
{
//blablabla
}
0
 Аватар для Veyron
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
06.06.2009, 16:01
можно еще так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        public void addLines()
        {
            lines = new VScrollBar[cols_num];
            int x = 20, y = 100;
            for (int i = 0; i < cols_num; i++)
            {
                lines[i] = new VScrollBar();
                lines[i].Location = new Point(x, y);
                x += 40;
                this.Controls.Add(lines[i]);
                //Здесь собственно вся загвоздка...перепробовал много)))
                 //как видите последнее - использование анонимок...
                ScrollEventArgs A=new ScrollEventArgs(ScrollEventType.ThumbTrack,2);
                Form1_Scroll(lines[i], A);      
            }
        }
        public void Form1_Scroll(object sender, ScrollEventArgs e)
        {
            //тут ваш код
        }
0
16 / 16 / 3
Регистрация: 06.06.2009
Сообщений: 50
06.06.2009, 16:20  [ТС]
VelZeVuL,

собственно блаблабла меня больше всего интересует( Не знаю как сделать так, чтобы обработка изменяла текст конкретного i-того label...

Veyron,

Тоже самое...или я вижу фигу в ваших постах?(
0
 Аватар для Veyron
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
06.06.2009, 17:05
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
        public static int cols_num;
        public static VScrollBar[] lines;
        public static Label[] labels;
        public static int i = -1;
        public void addLines()
        {
            lines = new VScrollBar[cols_num];
            int x = 20, y = 100;
            for (i = 0; i < cols_num; i++)
            {
                lines[i] = new VScrollBar();
                lines[i].Location = new Point(x, y);
                x += 40;
                this.Controls.Add(lines[i]);
                lines[i].Scroll+=new ScrollEventHandler(Form1_Scroll);
            }
            i = -1;
        }
            public void Form1_Scroll(object sender, ScrollEventArgs e)
        {
                //вызывается если вызвано из процедуры
            if (i != -1)
                labels[i].Text = "тут ваш текст";
            else
            {
                //вызывается если вызвано по событию
            }
        }
коряво, но должно работать...
1
16 / 16 / 3
Регистрация: 06.06.2009
Сообщений: 50
07.06.2009, 13:35  [ТС]
Спасибо, тоже была мысль про глобализацию...но думал можно как-то покрасивее передать параметр))

Добавлено через 19 часов 12 минут 5 секунд
Не работает...

lines[i].Scroll+=new ScrollEventHandler(Form1_Scroll);

Продебажил:эта строка, а соответственно и Form1_Scroll всегда вызывается по событию...А при этом всегда i==-1

Выходит, надо как-то передавать параметр в этот обработчик ?_?

Добавлено через 1 час 0 минут 25 секунд
Решил проблему!))

Для каждого скроллбара установил имя равное его порядковому номеру.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public void addLines()
        {
            int x = 20, y = 100;
            for (int i = 0; i < cols_num; i++)
            {                
                lines[i] = new VScrollBar();
                lines[i].Location = new Point(x, y);
                lines[i].Name = Convert.ToString(i);
                x+=40;
                this.Controls.Add(lines[i]);
                lines[i].Scroll += new ScrollEventHandler(scrollAction);                
            }            
        }
А в обработчике событий немного помудился, но придумал такое:

C#
1
2
3
4
5
6
public static void scrollAction(object who, ScrollEventArgs e)
        {
            VScrollBar tmp = (VScrollBar)who;
            int i = Convert.ToInt16(tmp.Name);                    
                labels[i].Text = Convert.ToString(lines[i].Value);            
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2009, 13:35
Помогаю со студенческими работами здесь

Динамическое создание событий для динамически созданных TextBox
Есть поиск по Excel. Пользователь пишет фамилию, программа ищет по ней записи в таблице и выдает их в динамически созданных текстбоксах....

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

Создание событий для динамических объектов
Здравствуйте, начал изучать динамическое создание объектов. Создал на форме 400 объектов panel. Каждому присвоил имя (comb+'его...

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

Создание событий для динамически созданных объектов
procedure Addrich; {добавление компонента на экран } begin rich1:=TRichedit.Create(form2.scrollbox1); ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru