Chcem vložiť oneskorenie pre zmenu farbytlačidlo pre 2000 milisekund v mojej hre App v c # ... čo príkaz mám použiť pre to? (Chcem zmeniť farbu tlačidla na 2 sekundy a potom sa vrátiť do normálneho stavu) ďakujem
switch (colorNum)
{
case 1:
btnRed.BackColor = Color.Red
btnRed.BackColor = Color.LightCoral;
firedColors[count] = "Red";
count++;
break;
case 2:
btnBlue.BackColor = Color.Blue;
btnRed.BackColor = Color.LightBlue;
firedColors[count] = "Blue";
count++;
break;
case 3:
btnYellow.BackColor = Color.Gold;
btnYellow.BackColor = Color.LightYellow;
firedColors[count] = "Yellow";
count++;
break;
}
odpovede:
2 pre odpoveď č. 1Tu je jeden spôsob, ako to môžete urobiť async - await
:
using System.Threading.Tasks;
async void YourFunction() // <--- Use "async" keyword
{
switch (colorNum)
{
case 1:
btnRed.BackColor = Color.Red;
await Task.Delay(2000);
btnRed.BackColor = Color.LightCoral;
firedColors[count] = "Red";
count++;
break;
case 2:
btnBlue.BackColor = Color.Blue;
await Task.Delay(2000);
btnRed.BackColor = Color.LightBlue;
firedColors[count] = "Blue";
count++;
break;
case 3:
btnYellow.BackColor = Color.Gold;
await Task.Delay(2000);
btnYellow.BackColor = Color.LightYellow;
firedColors[count] = "Yellow";
count++;
break;
}
}
Poznámka: tento kód používať. Net verzie 4.5 a vyššie.
0 pre odpoveď č. 2
Použite a Timer
riadiť proces zmeny farby a likvidovaťpo každej zmene, ak si to „často nebudete meniť“, pretože ste si neuvedomili, kde chcete zmeniť farbu, umiestnil som kód do Button
.
private Color _originalColor = Color.LightGray;
private Color _newColor = Color.LightSkyBlue;
private bool _isOrigColor = true;
Timer _tmrChangeColor;
private void btnTest_Click(object sender, EventArgs e)
{
if (_tmrChangeColor != null) return;
_tmrChangeColor = new Timer {Interval = 2000, Enabled = true};
_tmrChangeColor.Tick += _tmrChangeColor_Tick;
}
void _tmrChangeColor_Tick(object sender, EventArgs e)
{
btnTest.BackColor = _isOrigColor ? _newColor : _originalColor;
_isOrigColor = !_isOrigColor;
_tmrChangeColor.Dispose();
_tmrChangeColor = null;
}