Pracuję nad programem do łamania słów WordSearch (zwanym także WordFind), w którym trzeba znaleźć określone słowa w masie liter. Używam WinForms C#.MouseHover nie uruchamia się, gdy mysz jest wyłączona.
Mój problem polega na tym, że chcę kliknąć i przytrzymać 1 literę (Label
), a następnie przeciągnąć do innych liter, aby zmienić ich ForeColor
. Próbowałem googling, ale bezskutecznie.
Oto co mam:
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;
};
}
Jednak nigdy zdarzenie MouseHover odpala chyba że mysz nie jest wciśnięty. Również nie ma szczęścia zamieniając MouseHover
z MouseEnter
. Tak więc, na bieżąco wydarzenia MouseDown
i MouseUp
i spróbował wykorzystać MouseHover w postaci samego:
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;
}
}
To zdarzenie nie ognia albo i jestem w rozterce, dlaczego to nie jest wypalanie i co kilka alternatywnych rozwiązań . Każda rada jest doceniana.
można użyć czasomierza i sprawdzić, czy przycisk myszy jest naciśnięty następnie kod z 'frmMain_MouseHover' powinny być wykonywane. Możesz to sprawdzić [odpowiedź] (http://stackoverflow.com/questions/8159534/net-how-to-check-if-the-mouse-is-in-a- control) –
Niesamowite rozwiązanie! Myśl poza polem! Tysm! –