Привет сегодня я прихожу с этим сомнением: Возможно способствовать тому, чтобы панель и 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 и панель у них должно быть то же активное событие в обоих.
После ревизии уже я решил код, что нужно делать тебе, состоит в том, чтобы отделять события. Я объясняюсь: Для панели нужно создавать Вашего собственного 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;
}
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;
}