Я работаю над программой голосовой WordSearch (также называемой WordFind), где вам нужно найти определенные слова в массе букв. Я использую C# WinForms.MouseHover не стреляет, когда мышь не работает
Моя проблема в том, когда я хочу нажать и удерживать 1 букву (Label
), а затем перетащить ее на другие буквы, чтобы изменить их ForeColor
. Я пробовал поиск в Интернете, но безрезультатно.
Вот что у меня есть:
foreach (Letter a in game.GetLetters())
{
this.Controls.Add(a);
a.MouseDown += (s, e2) =>
{
isDown = true;
a.ForeColor = Color.Yellow;
};
a.MouseUp += (s, e2) =>
{
isDown = false;
};
a.MouseHover += (s, e2) =>
{
if (isDown)
a.ForeColor = Color.Yellow;
};
}
Однако событие MouseHover никогда не срабатывает, если мышь не не удерживается. Также не повезло обменивать MouseHover
с MouseEnter
. Таким образом, я держал MouseDown
и MouseUp
события и пытался использовать MouseHover в самой форме:
private void frmMain_MouseHover(object sender, MouseEventArgs e)
{
if (isDown)
{
foreach (Letter l in game.GetLetters())
if (l.ClientRectangle.Contains(l.PointToClient(Control.MousePosition)))
l.ForeColor = Color.Purple;
}
}
Это событие не срабатывает либо, и я в недоумении, почему это не обжига и то, что некоторые альтернативные решения , Любые советы приветствуются.
Вы могли бы использовать таймер и проверить, если кнопка мыши нажата, то код из 'frmMain_MouseHover' должен быть выполнен. Вы можете проверить это [ответ] (http://stackoverflow.com/questions/8159534/net-how-to-check-if-the-mouse-is-in-a-control) –
Удивительное решение! Думайте нестандартно! Tysm! –