Как делать для того, чтобы labels и панели работали целиком?

Привет сегодня я прихожу с этим сомнением: Возможно способствовать тому, чтобы панель и label работали целиком и функционировали с тем же событием? Я объясняюсь, стараюсь делать массив 15x15 из панелей с labels в Вашем внутреннем помещении, этот метод будет включен mouseEnter и то, что он реализует, состоит в том, чтобы, если мышь вошла, некое это число раз изменилось в некий цвет и label в Вашем внутреннем помещении показал число раз. Что-то такое, что я схватил (Этот код делает точно то, что я ищу):

            int cont1 = 0;
            cont1++;
            labeltest.Text = cont1.ToString();
            if (cont1 <= 5)
            {
                paneltest.BackColor = Color.SlateBlue;
            }
            if (cont1 >= 5)
            {
                paneltest.BackColor = Color.Cyan;
            }
            if (cont1 >= 10)
            {
                paneltest.BackColor = Color.Lime;
            }
            if (cont1 >= 15)
            {
                paneltest.BackColor = Color.Yellow;
            }
            if (cont1 >= 20)
            {
                paneltest.BackColor = Color.Red;
            }

Проблема с предыдущим кодом состоит в том, что, как это массив 15x15, код остался бы слишком пространным, из-за которого это общее количество 225 панелей, и был бы должен определять каждую панель флагшток номер 225. Однако у меня есть этот другой код реши проблему пространного кода:

private void paneltest_MouseEnter(object sender, EventArgs e)
        {
            Control ctrl = sender as Control;
            Control lctrl = sender as Control;
            int count = 0;
            //las variables con una "l" al inicio del nombre administran el label
            string tagValue = ctrl.Tag == null ? "0" : ctrl.Tag.ToString();
            string ltagValue = ctrl.Tag == null ? "0" : ctrl.Tag.ToString();
            bool isTagParsed = Int32.TryParse(tagValue, out count);
            bool isLtagParsed = Int32.TryParse(tagValue, out count);

            lctrl.Text = count.ToString();
            if (count >= 20)
            {
                ctrl.BackColor = Color.Red;

            }
            else if (count >= 15)
            {
                ctrl.BackColor = Color.Yellow;
            }
            else if (count >= 10) { ctrl.BackColor = Color.Lime; }
            else if (count >= 5) { ctrl.BackColor = Color.Cyan; }
            else { ctrl.BackColor = Color.SlateBlue; }

            count++;
            ctrl.Tag = count + "";
            lctrl.Tag = count;
        }

Но в этом проблема состоит в том, что к label и панели отнеслись как отличные. Как только курсор мыши входит, label может изменять цвет и панель другого и так же как введите подсчет label и панель отличная. Возможно заставлять это функционировать вместе с тем или существует форма, которой панель считала бы сам без необходимости, имения label внутри?

Заметь: Чтобы скроллировать второй пример label и панель у них должно быть то же активное событие в обоих.

0
задан 29.08.2019, 02:11
1 ответ

После ревизии уже я решил код, что нужно делать тебе, состоит в том, чтобы отделять события. Я объясняюсь: Для панели нужно создавать Вашего собственного MouseEnter и размещать себе это, для label то же самое другой Mouse event:

  • Код для панели:
        private void paneltest_MouseEnter(object sender, EventArgs e)
        {
            Control ctrl = sender as Control;
            int count = ctrl.Tag == null ? 0 : (int)ctrl.Tag;

            if (count >= 20) ctrl.BackColor = Color.Red;
            else if (count >= 15) ctrl.BackColor = Color.Yellow;
            else if (count >= 10) ctrl.BackColor = Color.Lime;
            else if (count >= 5) ctrl.BackColor = Color.Cyan;
            else ctrl.BackColor = Color.SlateBlue;

            ctrl.Tag = ++count;

        }
  • Код для Label
        private void labeltest_MouseEnter(object sender, EventArgs e)
        {
            Control lctrl = sender as Control;
            int count = 0;

            string ltagValue = lctrl.Tag == null ? "0" : lctrl.Tag.ToString();

            bool isLtagParsed = Int32.TryParse(ltagValue, out count);

            lctrl.Text = count.ToString();

            count++;

            lctrl.Tag = count;
        }
0
ответ дан 11.09.2019, 03:34

Теги

Похожие вопросы