C# Tab控件空白处双击

标签 c# .net winforms tabcontrol

我正在编写 C# WinForm 应用程序。我有一个标签控件,我已经预设了所有功能,例如通过菜单添加新标签,双击标签删除。我现在的问题是,每次双击选项卡控件的空白灰色区域时,我都想创建一个选项卡。

我已经搜索了大约一个小时,我发现的很多内容都是与 WPF 打交道的,我不想很快深入研究这些内容。所以我正在寻找适合我检测双击的方法的问题。我试过 双击鼠标双击 双击在选项卡上工作,鼠标双击做同样的事情,除了它捕获鼠标事件参数。这样我就可以使用

e.Location

除了它仅在选项卡本身上提供该信息。任何人有任何建议来捕获标签本身之外的双击吗?我试过在父项中使用鼠标双击窗口本身,尝试创建一个完全不透明的元素来处理点击,但我每次都碰壁了。

 private void Tabs_MouseDoubleClick(object sender, MouseEventArgs e)
 {
      //only works when double clicking tabs
      MessageBox.Show(e.Location.ToString());
 }

最佳答案

似乎TabControl部分对鼠标是透明的,所有的鼠标事件都会经过该部分,并被该部分后面的控件接收。

因此,作为解决方法,您可以将 TabControl 放在 Panel 中,并设置 TabControlDock 属性Fill,并处理 PanelDoubleClick 事件。您还可以选择鼠标 Hook ,但我相信面板选项更简单。

控件的鼠标透明部分在下图中以红色显示。控制边界也是该区域的一部分。

enter image description here

关于C# Tab控件空白处双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39321551/

相关文章:

c# 表单项目 : Passing Information to User Control

winforms - C++/CLI : How to control WinForms from main function?

c# - 如果不为空则格式化字符串

c# - 如何将 DbContext 注入(inject) ASP.NET Core 中的存储库构造函数

asp.net - 在 ASP.NET 5 响应中设置 Content-Length header

.net - 我可以使用枚举作为 ConverterParameter 吗?

c# - 将 DataSource 属性添加到自定义 WinForms 控件

c# - 在 BackGroundWorker 中使用定时器

c# - 如何处理与 Windows StreamSocket 的断开连接/重新连接

.net - 如何通过.NET中的配置禁用NewRelic