2

我想要的一切都显示在下面的图片中。我怎么能做到这一点?

在此处输入图像描述

如何在 tabcontrol 标签页上添加任何按钮?或者那是我需要创建的自定义控件?

第一张图片来自visual studio,第二张图片来自photoshop。

我也可以找到一种方法让用户关闭它,但我真的需要实现这一点,因为它对用户更友好。

4

2 回答 2

1

您展示的第一个示例是使用 WPF 制作的,如果您已经了解 WPF,这很容易做到。第二个示例看起来像 Photoshop,它很可能是一个自定义 C++ Win32 控件。

但是,如果您使用 WinForms,您通常无法使用标准控件进行此类自定义。您可以通过从 Control 派生并自己处理绘画和输入来编写自己的 TabControl,这是我过去做过的,但这也是很多工作。特别是如果您考虑到您必须管理每个选项卡的子控件列表。并且您可能希望在设计时支持将其他控件和面板拖放到每个选项卡中,并在 Visual Studio 设计器中修改选项卡属性。如果你走这条路,这一切都不会为你完成。

如果你不想学习 WPF,也不想花一周的时间来编写一个健壮的自定义控件,你可以看看 Telerik、DevExpress、Infragistics 等公司,你也许可以简单地支付一个控件库,其中一个 TabControl 已经这样做了。

于 2013-10-02T17:06:49.793 回答
0

这是一个愚蠢的方法......

在选项卡名称的末尾添加一些空格和 X。在点击甚至捕获鼠标 X 并查看它是否在 X 上。

Private Sub TabControl1_Click(sender As System.Object, e As System.EventArgs) Handles TabControl1.Click
    Dim m As System.Windows.Forms.MouseEventArgs = DirectCast(e, System.Windows.Forms.MouseEventArgs)
    Dim tabWidth As Integer =
        Convert.ToInt32(Me.CreateGraphics().MeasureString(TabControl1.SelectedTab.Text, TabControl1.Font).Width)
    Debug.Print(m.X & " " & m.Y & " " & tabWidth)
End Sub

需要一个 Sub/Func 来计算显示哪些选项卡的热点。遍历可见选项卡并使用如上所示的 tabWidth 进行数学运算。

于 2013-10-03T15:30:14.477 回答