【问题标题】:C# Tab Control Empty Space Double ClickC#选项卡控件空白空间双击
【发布时间】:2016-09-04 21:14:04
【问题描述】:

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

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

e.Location

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

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

【问题讨论】:

  • 我不知道该怎么做,但我知道这两个双击操作对我来说似乎都不太直观。向选项卡添加 X 和向选项卡控件添加 + 页是标准用户所期望的。 - 大声笑:刚刚注意到完全相同的反应here
  • 似乎该部分对鼠标是透明的,所有鼠标事件都通过该部分,并将被该部分后面的控件接收。因此,作为一种解决方法,您可以将TabControl 放在Panel 中并将TabControlDock 属性设置为true,并将DoubleClick 的句柄DoubleClick 事件设置为Panel
  • TaW 老实说,我不认为这是行业标准。一些应用程序可能会这样做,但我知道 NP++ 具有双击操作,并且将尝试 Reza Aghaei 方法
  • @Reza:您建议的解决方法工作正常,因为它解决了问题,而不是指出操作设计中的(真实或感知的)缺陷,它应该是一个答案,imo。

标签: c# .net winforms tabcontrol


【解决方案1】:

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

因此,作为一种解决方法,您可以将TabControl 放在Panel 中,并将TabControlDock 属性设置为Fill,并将DoubleClick 事件的句柄设置为Panel。您还可以选择鼠标挂钩,但我相信面板选项更简单。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2021-01-17
    • 1970-01-01
    相关资源
    最近更新 更多