Подписаться и отписаться от событий по нажатию на кнопку - C#
Формулировка задачи:
Мы недавно начали изучать программирование /не считая тп года 2 назад/ и я решил сделать небольшую программку. Но в процессе написания возникли ошибки >_> и вопросы. Нужно сделать событие, если произошло другое событие (в данном случае, оказалось проще вроде, и получается, если кнопка нажата, то событие MouseMove должно заработать, а до нажатия, чтобы не работало. Вроде, нужно использовать вот еще, VS ругается на фигурные скобочки (т.е. после них показывает ошибку)
if
, но как дальше оформить - я не знаю :С И ещё - после заполнения прогресс бара (если значение прогрессбара - максимальное), должно появляться MessageBox, но оно не появляется, вроде не должно быть проблем <_< объясните, пожалуйста. Код, который набросал, прилагаетсяnamespace Baloon
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var btn = sender as Button;
btn.Enabled = false;
progressBar1.Value = 0;
var timer = new System.Windows.Forms.Timer();
timer.Interval = 1000;
timer.Tick += (s, a) =>
{
progressBar1.Value += 1;
if (progressBar1.Value == progressBar1.Maximum)
{
timer.Stop();
btn.Enabled = true;
MessageBox.Show("Вы проиграли!");
}
timer.Start();
}
if (button1.CanSelect == false)
{
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
pictureBox1.Top -= e.Y;
pictureBox1.Left += e.X;
if (pictureBox1.Top < 30 || pictureBox1.Top > 150)
pictureBox1.Top = 146;
if (pictureBox1.Left < 30 || pictureBox1.Left > 250)
pictureBox1.Left = 187;
}
}
}
}Решение задачи: «Подписаться и отписаться от событий по нажатию на кнопку»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Baloon
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
timer1.Interval = 1000;
timer1.Tick += new System.EventHandler(timer1_Tick);
}
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.MouseMove += new MouseEventHandler(pictureBox1_MouseMove);
button1.Enabled = false;
timer1.Start();
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
pictureBox1.Top -= e.Y;
pictureBox1.Left += e.X;
if (pictureBox1.Top < 30 || pictureBox1.Top > 150)
pictureBox1.Top = 146;
if (pictureBox1.Left < 30 || pictureBox1.Left > 250)
pictureBox1.Left = 187;
}
private void timer1_Tick(object sender, EventArgs e) //Точно не помню
{
progressBar1.Value += 1;
if (progressBar1.Value == progressBar1.Maximum)
{
timer1.Stop();
button1.Enabled = true;
MessageBox.Show("Вы проиграли!");
}
}
}
}