Sto lavorando a un programma di enigmi di WordSearch (chiamato anche WordFind) in cui devi trovare determinate parole in una massa di lettere. Sto usando C# WinForms.Mouse non si attiva quando il mouse è inattivo
Il mio problema è quando voglio fare clic e tenere premuto 1 lettera (Label
), quindi trascinare su altre lettere per cambiare il loro ForeColor
. Ho provato googling ma senza risultato.
Ecco quello che ho:
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;
};
}
Tuttavia, l'evento MouseHover mai spara a meno che il mouse non viene tenuto premuto. Anche senza fortuna scambiando MouseHover
con MouseEnter
. Così, ho continuato le MouseDown
e MouseUp
eventi e provato ad utilizzare MouseHover all'interno del modulo stesso:
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;
}
}
Questo evento non sia e io sono in perdita per spiegare perché non è sparare e quali alcune soluzioni alternative sono . Qualsiasi consiglio è apprezzato.
Si potrebbe utilizzare un timer e verificare se il pulsante del mouse è in basso e poi il codice da 'frmMain_MouseHover' deve essere eseguito. Puoi controllare [risposta] (http://stackoverflow.com/questions/8159534/net-how-to-check-if-the-mouse-is-in-a-control) –
Soluzione eccezionale! Pensare fuori dagli schemi! Tysm! –