有沒有簡單的方法(5行代碼)來做到這一點?用鼠標中鍵按下winforms選項卡上的關閉選項卡
8
A
回答
20
刪除中間鼠標按鈕被點擊的標籤的最短代碼是通過使用LINQ。
確保事件連線了this.tabControl1.MouseClick += tabControl1_MouseClick;
而對於處理程序本身
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
var tabControl = sender as TabControl;
var tabs = tabControl.TabPages;
if (e.Button == MouseButtons.Middle)
{
tabs.Remove(tabs.Cast<TabPage>()
.Where((t, i) => tabControl.GetTabRect(i).Contains(e.Location))
.First());
}
}
如果你是追求線條的量最少,這是一條線
tabControl1.MouseClick += delegate(object sender, MouseEventArgs e) { var tabControl = sender as TabControl; var tabs = tabControl.TabPages; if (e.Button == MouseButtons.Middle) { tabs.Remove(tabs.Cast<TabPage>().Where((t, i) => tabControl.GetTabRect(i).Contains(e.Location)).First()); } };
-1
你可以這樣做:
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Middle)
{
// choose tabpage to delete like below
tabControl1.TabPages.Remove(tabControl1.TabPages[0]);
}
}
基本上你只是迎頭趕上標籤控制鼠標點擊僅刪除頁面,如果被點擊中間的按鈕。
6
解決方案,而LINQ不那麼緊湊和美觀,但也是實際的:
private void TabControlMainMouseDown(object sender, MouseEventArgs e)
{
var tabControl = sender as TabControl;
TabPage tabPageCurrent = null;
if (e.Button == MouseButtons.Middle)
{
for (var i = 0; i < tabControl.TabCount; i++)
{
if (!tabControl.GetTabRect(i).Contains(e.Location))
continue;
tabPageCurrent = tabControl.TabPages[i];
break;
}
if (tabPageCurrent != null)
tabControl.TabPages.Remove(tabPageCurrent);
}
}
2
D沒有足夠的分數來發表對所提供的解決方案的評論,但他們都遭受同樣的缺陷:已刪除選項卡中的控件未被釋放。
Regards
相關問題
- 1. 如何使用鼠標中鍵關閉TabControlEx選項卡?
- 2. 關閉打開使用jQuery選項卡上的關閉按鈕
- 3. ExtJS 4:關閉選項卡面板中的所有選項卡
- 4. Bootstrap 2.1 javascript嵌套選項卡:內部選項卡關閉外部選項卡
- 5. 關閉該選項卡 - IE
- 6. 關閉Angular-UI選項卡
- 7. 選項卡關閉事件
- 8. 退出選項卡關閉
- 9. Visual Studio 2010選項卡關閉按鈕
- 10. 關閉子選項卡後的父級選項卡
- 11. MFC選項卡式文檔 - 如何啓用鼠標中鍵來關閉文檔?
- 12. 其他選項卡關閉時刷新瀏覽器選項卡
- 13. 安卓關閉選項卡在選項卡主機
- 14. 當我按下回車鍵時,選項卡控件的標籤頁會關閉
- 15. 將鼠標懸停在具有多個選項卡組的JavaScript選項卡上
- 16. 關閉android中的選項卡
- 17. Chrome擴展中的關閉選項卡
- 18. 如何關閉CMFCTabCtrl中的選項卡
- 19. 關閉TabPane中的所有選項卡
- 20. QTabWidget上的關閉按鈕而不是QTabWidget中的選項卡
- 21. YUI TabView:關閉所有選項卡時,「添加選項卡」按鈕
- 22. ExtJs關閉按鈕在Tabpanel中的每個選項卡上
- 23. 在Access 2007中的選項卡外部選項卡上的選項卡
- 24. 選項卡中的嵌套選項卡
- 25. 合併選項卡中的選項卡
- 26. 使用Javascript關閉Firefox選項卡
- 27. 使用WPF關閉嵌套選項卡?
- 28. 使用javascript關閉Firefox選項卡
- 29. DDMS中Occasionaly關閉設備選項卡
- 30. Android - 導航選項卡 - 刷卡選項卡(固定選項卡)
這將不會關閉被點擊的標籤頁。這會讓我瘋狂,如果它刪除了第一個,不管我點擊了哪一個。 – Samuel 2009-04-13 20:50:57
那麼你會改變它來選擇你想要擺脫的任何標籤。 – ryanulit 2009-04-14 14:00:24