none
Порядок событий RRS feed

  • Вопрос

  • Доброго времени суток!

    У меня на форме есть элемент Panel и на нем элемент PictureBox. Мышка движется по Панели и заходит на PictureBox. 

    У меня есть два события.

    1. Событие MouseLeave элемента Panel возникает, когда курсор мыши выходит за пределы элемента Panel.

    2. Событие MouseEnter элемента PictureBox возникает, когда курсор попадает на элемент PictureBox.

    Как мне сделать, чтобы в событии MouseEnter глобальная переменная получила какое-то значение. А потом это значение прочитать в событии MouseLeave в конструкции if.

    Спасибо,

    Рамиль. 

    13 сентября 2013 г. 21:36

Ответы

  • Уважаемые коллеги!

    Спасибо. Ответ уже не требуется.

    Вышел из положения следующим образом: Первоначальное событие было Выход курсора за пределы Панели. По условиям программы мне потребовалось генерировать событие при условии наведения курсора мышки на картинку, которая лежит на панели. В этом случае получается, что курсор выходит за пределы панели и второе условие (наведение курсора на картинку) просто не происходит. 

    Пришлось изменить первое условие. Теперь это стало событием не Панели, а Формы. Суть осталась та же: при выходе мышки из Панели происходит условие.

    Всем спасибо, Персонально Олегу Курзову.

    С уважением, Рамиль.

    26 сентября 2013 г. 8:04

Все ответы

  • public partial class Form1 : Form
        {
            private int someRandomValue;
            private Random random = new Random();
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void OnMouseLeaveFromPanel(object sender, EventArgs e)
            {
                if (this.someRandomValue != 0)
                {
                    Debug.WriteLine(this.someRandomValue);
                }
            }
    
            private void OnMouseEnterToPictureBox(object sender, EventArgs e)
            {
                this.someRandomValue = random.Next(1, 10);
            }
        }


    13 сентября 2013 г. 22:14
  • Не получается. По условию события MouseLeave курсор перемещается в начальную точку панели. И условие захода курсора мышки на PictureBox просто не успевает происходить. Или не происходит вообще.

    Вот мой код:

            private void MoveToStart()
            {
                Point startingPoint = panel1.Location;
                startingPoint.Offset(10,10);
                Cursor.Position = PointToScreen(startingPoint);
            }

            private void Kill()
            {
                if (billchery == 0)
                {
                    ++billKill;
                    label49.Text = billKill.ToString();
                    MessageBox.Show("Увы! Убит!");
                    MoveToStart();
                }
            }

            private void panel1_MouseLeave(object sender, EventArgs e)

            {
                if(billchery == 0) Kill();
            }

            private void pictureBox1_MouseEnter(object sender, EventArgs e)
            {
                ++billchery;
                pictureBox1.Visible = false;
            }

    13 сентября 2013 г. 22:37
  • Уважаемые коллеги!

    Спасибо. Ответ уже не требуется.

    Вышел из положения следующим образом: Первоначальное событие было Выход курсора за пределы Панели. По условиям программы мне потребовалось генерировать событие при условии наведения курсора мышки на картинку, которая лежит на панели. В этом случае получается, что курсор выходит за пределы панели и второе условие (наведение курсора на картинку) просто не происходит. 

    Пришлось изменить первое условие. Теперь это стало событием не Панели, а Формы. Суть осталась та же: при выходе мышки из Панели происходит условие.

    Всем спасибо, Персонально Олегу Курзову.

    С уважением, Рамиль.

    26 сентября 2013 г. 8:04