原創|其它|編輯:郝浩|2012-10-11 11:32:09.000|閱讀 1866 次
概述:.net組件包中,有一個組件是xtraTabbedMdiManager,可以將MDI窗口顯示為TabControl的樣式,可以說非常實用。可惜的是,關閉標簽頁(即子MdiChild)不能通過雙擊來實現,這對于用慣了傲游等軟件的朋友來說,有點不習慣。查看xtraTabbedMdiManager的事件,只有MouseDown,MouseUp等,并沒有DoubleClick,好不爽。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
.net組件包中,有一個組件是xtraTabbedMdiManager,可以將MDI窗口顯示為TabControl的樣式,可以說非常實用。可惜的是,關閉標簽頁(即子MdiChild)不能通過雙擊來實現,這對于用慣了傲游等軟件的朋友來說,有點不習慣。查看xtraTabbedMdiManager的事件,只有MouseDown,MouseUp等,并沒有DoubleClick,好不爽。
其實,轉換一下思路,我們可以將連續的兩次MouseDown事件模擬成一個雙擊事件,就可以解決上面的問題了,真是一點就破,技術上沒有什么難度,且看代碼吧:
//通過MouseDown事件模擬雙擊關閉標簽頁 private DateTime m_LastClick = System.DateTime.Now; private void xtraTabbedMdiManager1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { DateTime dt = DateTime.Now; TimeSpan span = dt.Subtract(m_LastClick); if (span.TotalMilliseconds < 300) //如果兩次點擊的時間間隔小于300毫秒,則認為是雙擊 { if (this.MdiChildren.Length > 1) { if (this.ActiveMdiChild != m_MapForm) { this.ActiveMdiChild.Close(); } } m_LastClick = dt.AddMinutes(-1); } else m_LastClick = dt; } else if (e.Button == MouseButtons.Right) { //彈出右鍵菜單 if (this.ActiveMdiChild != m_MapForm) { POINTAPI pt = new POINTAPI(); GetCursorPos(ref pt); System.Drawing.Point p = new System.Drawing.Point(pt.x, pt.y); popMenuCloseTab.ShowPopup(this.barManager1, p); } } } private void mnuCloseTab_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (this.ActiveMdiChild != m_MapForm) { this.ActiveMdiChild.Close(); } }
在這里,我們認為如果兩次點擊時間間隔小于300毫秒,就認為是雙擊。注意,m_LastClick
= dt.AddMinutes(-1),這一行代碼的作用是,表示雙擊完成,避免點擊三次認為是雙擊了兩次。
上面的代碼還提供了點擊右鏈彈出菜單功能。可以在右鍵菜單中加入你要的功能。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載