Подписаться и отписаться от событий по нажатию на кнопку - C#

Узнай цену своей работы

Формулировка задачи:

Мы недавно начали изучать программирование /не считая тп года 2 назад/ и я решил сделать небольшую программку. Но в процессе написания возникли ошибки >_> и вопросы. Нужно сделать событие, если произошло другое событие (в данном случае, оказалось проще вроде, и получается, если кнопка нажата, то событие MouseMove должно заработать, а до нажатия, чтобы не работало. Вроде, нужно использовать

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;

        }
    }
           
    }
    }
вот еще, VS ругается на фигурные скобочки (т.е. после них показывает ошибку)

Решение задачи: «Подписаться и отписаться от событий по нажатию на кнопку»

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("Вы проиграли!");
                }
         }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы