Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 12

Движущиеся кнопки

16.03.2011, 23:02. Показов 2201. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет, нужно сделать 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
namespace WindowsFormsApplication7
{
    public delegate void HelperMotion(Button b);
    public partial class Form1 : Form
    {
        Thread t1, t2;
        HelperMotion helper;
 
        public Form1()
        {
            helper = new HelperMotion(Motion);
            InitializeComponent();
        }
        void Motion(Button button)
        {
            while (true)
            {
                Thread.Sleep(100);
                button.Location = new Point(button.Location.X+1, button.Location.Y);
            }
        }
        void Movement1()
        {
            Invoke(helper, button1);
        }
        void Movement2()
        {
            Invoke(helper, button2);
        }
 
        private void start_btn_Click(object sender, EventArgs e)
        {
            t1 = new Thread(Movement1);
            t2 = new Thread(Movement2);
            t1.IsBackground = t2.IsBackground = true;
            t1.Start();
            t2.Start();
        }
    }
}
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2011, 23:02
Ответы с готовыми решениями:

Движущиеся PictureBox
У меня есть класс создающий PictureBox и кнопка, добавляющая их на tabPage. PictureBox должен...

Определить время, через которое встретятся два тела, равноускоренно движущиеся навстречу
Разработка консольных приложений Линейные алгоритмы Определить время, через которое встретятся...

Привязать выполнение действия кнопки на нажатие кнопки Enter
У меня кнопка - Button, выполняет такое то действие, не подскажите, как привязать выполнение...

4
Шаровик затейник
 Аватар для Crudelis
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
16.03.2011, 23:14
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        void Motion(Button button)
        {
               button.Location = new Point(button.Location.X+1, button.Location.Y);
        }
        void Movement1()
        {
            while (true)
            {
                Thread.Sleep(100);
                Invoke(helper, button1);
            }
        }
        void Movement2()
        {
            while (true)
            {
                Thread.Sleep(100);
                Invoke(helper, button2);
            }
        }

Не по теме:

Вижу кнопки сделаны по Гудку:)))

2
2 / 2 / 0
Регистрация: 16.03.2011
Сообщений: 12
16.03.2011, 23:20  [ТС]
Crudelis , спасибо за ответ ага какраз щас его смотрю) а можно узнать для общего развития почему в Motion() нельзя написать цикл?
1
Шаровик затейник
 Аватар для Crudelis
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
16.03.2011, 23:30
Wintego, я думаю что в первом потоке зациклился while(true) и не дает перейти ко второму потомку пока не будет завершен, возможно я и не прав.
2
22 / 22 / 2
Регистрация: 09.02.2011
Сообщений: 54
17.03.2011, 12:11
Интересно, может действительно потому что у тебя цикл никогда не заканчивается но это не должно ничего блокировать...

А ты ничего не переписываешь строкой?
C#
1
 t1.IsBackground = t2.IsBackground = true;
Добавлено через 11 минут
Проверил у себя, она работают не парралельно а последовательно. После нажатия старт вся форм блокируется, немогу понять от чего...
Скорее всего из-за
C#
1
2
3
4
5
6
7
8
 void Movement1()
        {
            Invoke(helper, button1);
        }
        void Movement2()
        {
            Invoke(helper, button2);
        }
Добавлено через 1 час 0 минут
Правильно, Invoke блокируется до завершения... Надо что то думать с BeginInvoke/EndInvoke для создания парралельности....
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2011, 12:11
Помогаю со студенческими работами здесь

Как из обработчика Form1_KeyPress вызвать событие для нажатия заданной по имени кнопки на форме (кнопки 0-9)
Пишу калькулятор. Есть несколько кнопок (Button) с цифрами и знаками. Для цифр имена кнопок:...

Вызов процедуры нажатия кнопки с кнопки
При нажатии на Button1 создается экземпляр класса. Требуется, при нажатии на Button2 вызывать...

Движущиеся прямоугольники
10 прямоугольников, находящихся на одной линии и имеющих одинаковую ширину и при этом каждые пол...

Движущиеся ссылки
Народ, кто нибудь знает как реализовать фишку, что бы при наведении курсора ссылка плавно...

Движущиеся машинки
Здравствуйте. Нужна помощь в оптимизации кода(указать на ошибки) и в данной программе нужно сделать...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru