Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

В C#: Как описать в цикл с событием ожидания нажатия кнопки??!

24K
19 апреля 2007 года
sunday10
6 / / 19.04.2007
То есть нужна след. вешь, допустим i пробегает значения от 1 до 5, притом условием следующего шага цикла (т.е. что бы i стало =2) является нажатие кнопки.
Это возможно оформить??!
16K
19 апреля 2007 года
homeric
39 / / 13.02.2007
i обьявляешь полем класса и кидаешь на еденицу, ловишь нажатие кнопки а в метаде обработчике пишешь сокраментальное :
if (this.i<5) this.i++;
16K
19 апреля 2007 года
homeric
39 / / 13.02.2007
Всё тоже самое .... вот тока... в обработчике если i>=5 то пишешь Эвент-= или Эвент=null....чоб патом на клики он не срабатывал.....если хочешь добиться улучшения производительности.
24K
19 апреля 2007 года
sunday10
6 / / 19.04.2007
Вот блин... А мона как-нить поподробнее объяснить, с учётом того, что я в с# без году неделя кодить начал....
Если мона - пример кинуть, если есть)))
16K
19 апреля 2007 года
homeric
39 / / 13.02.2007
Код:
public partial class Form1 : Form
    {
        private int iterator_i;
        private KeyEventHandler EnterHandler;
        public Form1()
        {
            InitializeComponent();
            iterator_i = 1;
            EnterHandler = new KeyEventHandler(OnEnter);
            this.KeyDown += EnterHandler;
        }
        public void OnEnter(object o, KeyEventArgs ag)
        {
            if (ag.KeyCode == Keys.Enter)
                if (this.iterator_i < 5)
{ this.iterator_i++; MessageBox.Show("Ненавижу лентяев"); }
                else this.KeyDown -= EnterHandler;
        }
    }
16K
19 апреля 2007 года
homeric
39 / / 13.02.2007
Код:
public partial class Form1 : Form
    {
        private int iterator_i;
        public Form1()
        {
            InitializeComponent();
            iterator_i = 1;
        }
        protected override void OnKeyDown(KeyEventArgs ag)
        {
            if (ag.KeyCode == Keys.Enter)
                if (this.iterator_i < 5) { this.iterator_i++; MessageBox.Show("Смерть лентяям"); }
        }
5
19 апреля 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: sunday10
То есть нужна след. вешь, допустим i пробегает значения от 1 до 5, притом условием следующего шага цикла (т.е. что бы i стало =2) является нажатие кнопки.
Это возможно оформить??!


Например вот так:

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsApplication3 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private Thread cycle;
        private ManualResetEvent clickEvent = new ManualResetEvent(false);
        private void CycleProc() {
            for (int i = 1; i <= 5; ++i) {
                clickEvent.Reset();
                clickEvent.WaitOne(); // ждём сигнала о нажатии

                MessageBox.Show("клик!");
            }
        }

        private void Form1_Load(object sender, EventArgs e) {
            cycle = new Thread(CycleProc);  // порождаем поток цикла
            cycle.Start();
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e) {
            cycle.Abort();
        }

        private void button1_Click(object sender, EventArgs e) {
            clickEvent.Set(); // сигналим о том, что по кнопке кликнули
        }
    }
}
29K
02 мая 2007 года
Never Mind
1 / / 02.05.2007
Ребят, не поймите неправильно, но у меня похожий вопрос возник про ожидание нажатия, но ваши коды не работают! Там не то что InitializeComponent() нет, там даже Мэйна нет. Я извинясь, но кнопки тоже нигде не упоминаются.. Но даже с добавлением всего недостающего, прога не работает :(

Где можно прочитать про то, как реализовать ожидание нажатия на кнопку? Очень-очень нужно!
5
02 мая 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: Never Mind
Ребят, не поймите неправильно, но у меня похожий вопрос возник про ожидание нажатия, но ваши коды не работают!

Код в студию! :rolleyes:

63
03 мая 2007 года
Zorkus
2.6K / / 04.11.2006
Цитата: Never Mind
Ребят, не поймите неправильно, но у меня похожий вопрос возник про ожидание нажатия, но ваши коды не работают!


Ну выложи лог ошибок тогда.

Цитата: Never Mind

Там не то что InitializeComponent() нет, там даже Мэйна нет. Я извинясь, но кнопки тоже нигде не упоминаются.. Но даже с добавлением всего недостающего, прога не работает :(


Так Main нужен в WF-приложении только чтобы запустить приложение.
Вот например -

Код:
using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace DigitalSign
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
}

Автор попросил "помогите оформить кпопку" - ну так и дали примеры хэндлеров. А если нужен целиком код приложения - тогда это не в тот раздел, извините.
Цитата: Never Mind

Где можно прочитать про то, как реализовать ожидание нажатия на кнопку? Очень-очень нужно!


Из книг - думаю, Шилдта и Троелсена. А так - msdn только, по конкретным вещам.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог