Подписаться и отписаться от событий по нажатию на кнопку - 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("Вы проиграли!"); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д