2016-10-05 11 views
2

동적으로 생성 된 ToolStripStatusLabel에 대해 DoubleClick 이벤트를 구독하는 데 문제가 있습니다. 내 코드에서ToolStrip StatusLabel DoubleClick 이벤트가 발생하지 않습니다.

나는 StatusStrip 내부 ToolStripStatusLabel 일련의 항목을 만들고, 그 DoubleClick 이벤트에 가입하지만 결코 StatusStrip가 제대로 초기화됩니다

private void InitStatusBar() 
{ 
    foreach (CardReader cardReader in appConfig.CardReadersList) 
    { 
     System.Windows.Forms.ToolStripStatusLabel cardReaderStatusLabel = new ToolStripStatusLabel(); 
     cardReaderStatusLabel.Name = cardReader.Description; 
     cardReaderStatusLabel.Tag = cardReader; 
     cardReaderStatusLabel.Text = cardReader.Description.ToUpper(); 
     cardReaderStatusLabel.Image = cardReader.DeviceInfo.GetIconImage(); 
     cardReaderStatusLabel.DoubleClick += new System.EventHandler(this.cardReaderStatusLabel_DoubleClick); 
     this.statusStripBottom.Items.Add(cardReaderStatusLabel); 
     this.statusStripBottom.Refresh(); 
    } 
} 

private void cardReaderStatusLabel_DoubleClick(object sender, EventArgs e) 
{ 
    ToolStripStatusLabel clickedToolStripLabel = (ToolStripStatusLabel)sender; 
    CardReader taggedCardReader = (CardReader)clickedToolStripLabel.Tag; 
    MessageBox.Show("Lector: " + taggedCardReader.Description + Environment.NewLine + "Status: " + taggedCardReader.DeviceInfo.CardReaderStatusString); 

} 

상승없는 것 같습니다 (상태 레이블이 추가됩니다 및 상태 스트립 참조)하지만 난 그들에 더블 클릭 할 때 아무 일도 발생하지 않습니다 :(

은 내가 부족 뭔가가 있나요?

감사합니다 :)

+0

코드에 중단 점을 넣어 처리기가 실행 중인지 확인 했습니까? – Enigmativity

+0

InitializeComponent() 전에 InitStatusBar()를 호출하고 있습니까? – Dominik

답변

2

해당 항목에 대해 DoubleClickEnabled 속성을 true으로 설정해야하며 ToolStripItem에 대해 DoubleClick 이벤트를 처리 할 수 ​​있습니다.

ToolStripItem 자체 내부 메서드 HanldeMouseUp에서 더블 클릭을 처리합니다. 이 메서드에서는 DoubleClickEnabled 속성을 확인하고 마우스 위로부터 마지막 ​​클릭 사이의 틱을 기준으로 두 번 클릭 이벤트가 발생해야하는지 결정합니다.

+0

감사합니다. 그것은 바로 그 것이었다! :) – Kaikus