有没有简单的方法(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. ExtJS 4:关闭选项卡面板中的所有选项卡
- 3. 退出选项卡关闭
- 4. Visual Studio 2010选项卡关闭按钮
- 5. 关闭子选项卡后的父级选项卡
- 6. MFC选项卡式文档 - 如何启用鼠标中键来关闭文档?
- 7. QTabWidget上的关闭按钮而不是QTabWidget中的选项卡
- 8. 如何关闭CMFCTabCtrl中的选项卡
- 9. 关闭android中的选项卡
- 10. ExtJs关闭按钮在Tabpanel中的每个选项卡上
- 11. 在Access 2007中的选项卡外部选项卡上的选项卡
- 12. 合并选项卡中的选项卡
- 13. DDMS中Occasionaly关闭设备选项卡
- 14. 在关闭gwt中的一个选项卡后选项卡索引问题
- 15. 重定向到Firefox中的新选项卡后关闭选项卡
- 16. 选项卡中的下一个按钮
- 17. 键盘快捷键关闭所有选项卡,但Visual Studio中的当前选项卡?
- 18. Jquery选项卡启用选项卡?
- 19. 关闭浏览器/选项卡上的会话关闭
- 20. 按钮不会更改JQuery UI选项卡中的选项卡
- 21. 关闭与已打开的选项卡域匹配的所有新选项卡
- 22. 覆盖WinForms中的选项卡行为
- 23. 如何从javafx中的选项卡中删除关闭按钮
- 24. 从当前选项卡的标签中删除选项卡
- 25. Android:选项卡内的选项卡
- 26. jQuery UI - 可关闭多个选项卡
- 27. jquery [选项卡]打开和关闭
- 28. 关闭chrome自定义选项卡
- 29. 结账时关闭选项卡
- 30. 如何清除旧选项卡并在选项卡上添加新选项卡
这将不会关闭被点击的标签页。这会让我疯狂,如果它删除了第一个,不管我点击了哪一个。 – Samuel 2009-04-13 20:50:57
那么你会改变它来选择你想要摆脱的任何标签。 – ryanulit 2009-04-14 14:00:24