Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка Windows Forms > Выполнять действие пока нажата кнопка |
Автор: Bestrev 13.6.2009, 22:17 |
Товарищи, есть определённое действие, которое выполняется пока зажата кнопка на форме. Помогите реализовать программно. void кнопка1_Click(object sender, EventArgs e) вайл(пока нажата кнопка1) { действие } |
Автор: Экскалупатор 14.6.2009, 00:24 | ||
Предлагаю через потоки сделать:
привожу кусок кода, предполагает что на форме есть кнопка button1 и лейбл label1 код меняет значения в лейбле пока нажата кнопка. т.е. при событии MouseDown поток запускается при отпускании кнопки поток закрывается. Пример странный но рабочий, думаю для разбора сгодиться. p.s. Думаю можно как то и по другому сделать, но пока не придумал как, да и не факт что будет проще, хотя... |
Автор: DVariuS 15.6.2009, 08:10 | ||
Экскалупатор, твой код работать не будет. Вот исправленный вариант:
|
Автор: Экскалупатор 15.6.2009, 10:09 |
DVariuS, с чего вы взяли что он не будет работать? у меня все работает. вот пример: |
Автор: DVariuS 15.6.2009, 10:22 | ||
Экскалупатор, потому что по-умолчанию исполняющая среда .NET выдаст исключение вида:
А если твой код работает - это следствие определенных настроек компилятора или манипуляций с атрибутами и является скорее исключением, чем правилом. |
Автор: Экскалупатор 15.6.2009, 10:35 |
DVariuS, ыы-ы, вы будете смеяться но она ничего не выдает, она просто работает... |
Автор: DVariuS 15.6.2009, 10:49 | ||
Экскалупатор, я же сказал, работоспособность такого подхода - скорее случайность. Он может работать в 99 случаях из 100 при разработке и тестировании и совершенно отказаться работать при демонстрации готового продукта. У тебя просто установлено следующее свойство:
или отключена данная проверка каким-либо другим путем. Однако это не безопасно и Microsoft настоятельно рекомендует использовать показанный мной подход. |
Автор: Экскалупатор 15.6.2009, 11:57 |
DVariuS, меня больше интересует как можно добиться того же эффекта способом попроще, если конечно можно вообще. ну или как принято реализовывать подобные вещи? |
Автор: DVariuS 15.6.2009, 12:14 |
http://msdn.microsoft.com/en-us/library/ms171728.aspx |
Автор: MaestroRED 23.5.2010, 10:08 |
ThreadStart entryPoint; Thread ChangeThread; где непосредственно они объявлены? |
Автор: Экскалупатор 23.5.2010, 12:06 |
using System.Threading; |