【问题标题】:how to add a button in tabcontrol tabpages如何在tabcontrol标签页中添加按钮
【发布时间】:2013-10-09 04:07:02
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c# winforms controls tabcontrol tabpage


【解决方案1】:

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

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

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

【讨论】:

  • 这是一个非常有用的答案,不,我不愿意付钱,我宁愿花一周时间编写这样的自定义控制器,也不愿为它支付 1 便士,感谢会尽可能接受
  • 不要把它写在你的简历上。
【解决方案2】:

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

在选项卡名称的末尾添加一些空格和一个 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 进行数学运算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    相关资源
    最近更新 更多