2012-08-02 8 views
1

나는 ToolStripButton의 숫자를 가진 ToolStrip을 사용하고 있습니다.깜박임 ToolStripButton

내가 원하는 것은 사용자의 관심을 끌기 위해 버튼 중 하나를 플래시 할 수 있어야한다는 것입니다.

예를 들어, 정보를 변경 한 경우 버튼을 클릭해야합니다.

정상적인 버튼 인 경우 Timer을 사용하고 주기적으로 BackColor을 변경하지만 ToolStrip에서는 작동하지 않습니다.

렌더러 하위 클래스를 만들고 ToolStrip에 할당 할 수 있지만 특정 상황 (예 : 이벤트 중심)에서만 사용되는 것처럼 보입니다.

누구에게 아이디어가 있습니까?

+0

를 사용하여 공급 업체의 지원 포럼 : HTTP : //www.componentfactory ToolStrip에이 버튼을 포함하여 형태

using System; using System.Drawing; using System.Collections.Generic; using System.Windows.Forms; class BlinkingButtonRenderer : ToolStripProfessionalRenderer { public BlinkingButtonRenderer(ToolStrip strip) { this.strip = strip; this.strip.Renderer = this; this.strip.Disposed += new EventHandler(strip_Disposed); this.blinkTimer = new Timer { Interval = 500 }; this.blinkTimer.Tick += delegate { blink = !blink; strip.Invalidate(); }; } public void BlinkButton(ToolStripButton button, bool enable) { if (!enable) blinkButtons.Remove(button); else blinkButtons.Add(button); blinkTimer.Enabled = blinkButtons.Count > 0; strip.Invalidate(); } protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { var btn = e.Item as ToolStripButton; if (blink && btn != null && blinkButtons.Contains(btn)) { Rectangle bounds = new Rectangle(Point.Empty, e.Item.Size); e.Graphics.FillRectangle(Brushes.Black, bounds); } else base.OnRenderButtonBackground(e); } private void strip_Disposed(object sender, EventArgs e) { blinkTimer.Dispose(); } private List<ToolStripItem> blinkButtons = new List<ToolStripItem>(); private bool blink; private Timer blinkTimer; private ToolStrip strip; } 

샘플 사용 :이 코드를 프로젝트에 새 클래스를 추가하고 붙여 넣기 .com/forums/ –

+0

좋아,이 툴킷을 사용하고있는 순간을 잊어 버려. 도구 스트립 버튼에 대한보다 일반적인 질문이라고 생각합니다 ... – Nick

답변

5

음, 사용자 정의 렌더러를 사용하면 버튼의 배경색을 변경할 수 있습니다. 타이머가 깜박입니다.

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     blinker = new BlinkingButtonRenderer(toolStrip1); 
    } 
    private void toolStripButton1_Click(object sender, EventArgs e) { 
     blink = !blink; 
     blinker.BlinkButton(toolStripButton1, blink); 
    } 
    private bool blink; 
    private BlinkingButtonRenderer blinker; 
} 
+0

고마워요. – Nick

관련 문제