Tôi đang làm việc trên chương trình trò chơi WordSearch (còn được gọi là WordFind), nơi bạn phải tìm một số từ nhất định trong một khối chữ cái. Tôi đang sử dụng C# WinForms.MouseHover không kích hoạt khi chuột rơi xuống
Vấn đề của tôi là khi tôi muốn bấm và giữ 1 chữ cái (Label
), sau đó kéo qua các chữ cái khác để thay đổi ForeColor
của chúng. Tôi đã thử googling nhưng vô ích.
Dưới đây là những gì tôi có:
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;
};
}
Tuy nhiên, sự kiện MouseHover không bao giờ cháy trừ chuột không được tổ chức xuống. Ngoài ra không có may mắn trao đổi MouseHover
với MouseEnter
. Vì vậy, tôi giữ MouseDown
và MouseUp
sự kiện và cố gắng sử dụng MouseHover trong chính biểu mẫu:
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;
}
}
Sự kiện này không cháy hoặc và tôi đang ở một mất mát như lý do tại sao nó không bắn và những gì một số giải pháp thay thế là . Mọi lời khuyên đều được đánh giá cao.
Bạn có thể sử dụng bộ đếm thời gian và kiểm tra xem nút chuột có phải sau đó mã từ 'frmMain_MouseHover' sẽ được thực hiện hay không. Bạn có thể kiểm tra [answer] này (http://stackoverflow.com/questions/8159534/net-how-to-check-if-the-mouse-is-in-a-control) –
Giải pháp tuyệt vời! Thinkin bên ngoài hộp! Tysm! –