我想要的一切如下图所示。我怎么能做到这一点?
如何在tabcontrol标签页面添加任何按钮?或者是我需要创建的自定义控件?
第一张照片来自视觉工作室,第二张照片来自photoshop。
我也可以找到解决方法,让用户关闭它,但我真的需要实现这一点,因为它更友好。
答案 0 :(得分:1)
您展示的第一个示例是使用WPF制作的,如果您已经知道WPF ,则很容易做到。第二个示例看起来像Photoshop,很可能是自定义C ++ Win32控件。
但是如果你正在使用WinForms,你通常不能使用标准控件进行这些类型的自定义。您可以通过从Control派生并自己处理绘画和输入来编写自己的TabControl,这是我过去所做的,但它也是很多工作。特别是如果您考虑到必须管理每个选项卡的子控件列表。而且您可能需要设计时支持将其他控件和面板拖放到每个选项卡中,并修改Visual Studio Designer中的选项卡属性。如果你选择这条路线,那么这一切都没有。
如果您不想学习WPF,并且您不想花费一周时间来编写强大的自定义控件,那么您可以查看Telerik,DevExpress,Infragistics等公司。 。,你可能只需支付一个已经执行此操作的TabControl的控制库。
答案 1 :(得分: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进行数学运算。