[英]How do I find button that enabled timer
我想知道是否可以在 C# 中找到啟用計時器的按鈕。 這是我的代碼:
private void button1_MouseEnter(object sender, EventArgs e) {
fadeIn_Timer.Start();
}
int a;
private void fadeIn_Timer_Tick(object sender, EventArgs e) {
var btn = (Button)sender;
a += 30;
if (a >= 255) {a = 255; }
btn.BackColor = Color.FromArgb(a, 255, 255, 255); // would change back color of button1
btn.Refresh();
if (a == 255) { a = 0; fadeIn_Timer.Stop(); }
}
我已經嘗試過var btn = (Button)sender;
,但我似乎沒有運氣。 如果有人可以幫助我,那就太好了!
我建議您將Button
保存在MouseEnter
事件處理程序中,然后再使用它。 像這樣的東西:
private void button1_MouseEnter(object sender, EventArgs e) {
fadeIn_Timer.Start();
timerButton = (Button)sender;
}
int a;
Button timerButton;
private void fadeIn_Timer_Tick(object sender, EventArgs e) {
a += 30;
if (a >= 255) {a = 255; }
timerButton.BackColor = Color.FromArgb(a, 255, 255, 255); // would change back color of button1
timerButton.Refresh();
if (a == 255) { a = 0; fadeIn_Timer.Stop(); }
}
那應該讓你開始。
這是一個如何實現它的示例。 令人困惑的是 Timer 是一個 WinForms 控件,但您需要 System.Threading.Timer class 才能使其工作。
所以創建一個 WinForms 解決方案。 添加一個帶有按鈕的表單(在我的例子中是 button1),並在表單后面的代碼中添加下面的代碼。 當您單擊按鈕時,它應該在黑色和白色之間交替它的背景。
public partial class Form1 : Form
{
System.Threading.Timer Timer { get; set; }
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Timer = new System.Threading.Timer(button =>
{
Button myButton = (Button)button;
if (myButton.BackColor == Color.Black)
myButton.BackColor = Color.White;
else
myButton.BackColor = Color.Black;
}, button1, 1000, 1000);
}
}
當您啟動定時器時,您可以傳遞按鈕 object,如下所示:
Timer = new Timer(someObjectThatWasPassed =>
{
// Code here can access 'someObjectThatWasPassed'
}, someObjectToPass, 1000, 1000);
確保“計時器”是 class 中的一個字段,即:
public class SomeClass
{
Timer Timer { get; set; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.