簡體   English   中英

如何找到啟用計時器的按鈕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM