我在做一個計劃,將需要一個標籤頁時,事件發生就事件
我用Google搜索周圍閃爍的階段是一個TabPage的閃光燈,我碰到這樣的:Blink tab header on receiving event。這是類似的,但使用WPF,我使用的WinForms,我甚至不知道這是否做我想要的:L
我也發現這個:C#: Flash Window in Taskbar via Win32 FlashWindowEx。這是我想要的,但顯而易見的整個形式,並在任務欄中,不'在'形式'
任何人有任何想法?
我在做一個計劃,將需要一個標籤頁時,事件發生就事件
我用Google搜索周圍閃爍的階段是一個TabPage的閃光燈,我碰到這樣的:Blink tab header on receiving event。這是類似的,但使用WPF,我使用的WinForms,我甚至不知道這是否做我想要的:L
我也發現這個:C#: Flash Window in Taskbar via Win32 FlashWindowEx。這是我想要的,但顯而易見的整個形式,並在任務欄中,不'在'形式'
任何人有任何想法?
我並不是說這是最好的方法,或者甚至是一個很好的方法來完成這個,但它確實有效。當我需要類似的東西時,我已經使用類似於此的代碼。
tabControl1有兩個標籤,我眨眼標籤1(第二個標籤)。
對於我放在一起的示例,我將tabControl1的DrawMode
屬性設置爲「OwnerDrawFixed」,然後是幾個啓動/停止計時器的按鈕。間隔時間大概是750毫秒,但當然你可以選擇任何東西。在timer1_Tick
事件中,我換出當前顏色並告訴tabControl1
自行刷新。這將使得DrawItem
事件得到提升,然後如果它是標籤頁1,則將矩形繪製爲當前顏色,否則繪製矩形。然後我繪製該頁面的文本。
它的工作原理。可以肯定地使用一些調整。給它一個旋轉!
public partial class Form1 : Form
{
Color currentColor = Color.Green;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (currentColor == Color.Yellow)
currentColor = Color.Green;
else
currentColor = Color.Yellow;
tabControl1.Refresh();
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Stop();
}
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
if (timer1.Enabled && e.Index == 1)
{
e.Graphics.FillRectangle(new SolidBrush(currentColor), e.Bounds);
}
else
{
e.Graphics.FillRectangle(new SolidBrush(this.BackColor), e.Bounds);
}
Rectangle paddedBounds = e.Bounds;
paddedBounds.Inflate(-2, -2);
e.Graphics.DrawString(tabControl1.TabPages[e.Index].Text, this.Font, SystemBrushes.HighlightText, paddedBounds);
}
}
很好,謝謝:) – LordAro