2014年1月28日 星期二

C# Win Form如何利用GotFocus和LostFocus事件來變更焦點focus於button的樣式

看到論壇問到,因為User在操作系統時常常用tab鍵+enter來快速操作,但預設的focus只會在button上有虛線邊框,有時因為螢幕的因素可能會看不清楚,故希望focus的button能清楚明顯一些,而這個需求,就可以將button註冊GotFocus和LostFocus就能達到,我們先看看結果圖:

btn

做法是抓取所有的Button,並註冊這兩個事件:

public Form1()
{
    InitializeComponent();
    foreach (var control in this.Controls)
    {
        if (control.GetType() == typeof(Button))
        {
            Button btn = (Button)control;
            btn.GotFocus += btn_GotFocus;
            btn.LostFocus += btn_LostFocus;
        }
    }
}

void btn_LostFocus(object sender, EventArgs e)
{
    //改變該Button的樣式
    Button btn = (Button)sender;
    btn.BackColor = SystemColors.Control;
}

void btn_GotFocus(object sender, EventArgs e)
{
    //改變該Button的樣式
    Button btn = (Button)sender;
    btn.BackColor = System.Drawing.Color.Yellow; //變為黃色
}

參考資料

MSDN

沒有留言:

張貼留言