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;
}
}
В C#: Как описать в цикл с событием ожидания нажатия кнопки??!
Это возможно оформить??!
if (this.i<5) this.i++;
Всё тоже самое .... вот тока... в обработчике если i>=5 то пишешь Эвент-= или Эвент=null....чоб патом на клики он не срабатывал.....если хочешь добиться улучшения производительности.
Если мона - пример кинуть, если есть)))
Код:
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("Смерть лентяям"); }
}
{
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("Смерть лентяям"); }
}
Цитата: 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(); // сигналим о том, что по кнопке кликнули
}
}
}
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(); // сигналим о том, что по кнопке кликнули
}
}
}
Где можно прочитать про то, как реализовать ожидание нажатия на кнопку? Очень-очень нужно!
Цитата: Never Mind
Ребят, не поймите неправильно, но у меня похожий вопрос возник про ожидание нажатия, но ваши коды не работают!
Код в студию! :rolleyes:
Цитата: 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());
}
}
}
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 только, по конкретным вещам.