【问题标题】:Customizing button text appearance自定义按钮文本外观
【发布时间】:2014-02-15 02:43:15
【问题描述】:

我正在开发一个 vb.net winform 应用程序。 默认情况下,按钮上的文本在一点空间后开始。我需要从边框本身开始文本,没有任何空格。我还想通过添加一些缩进值来控制间距。

但是没有按钮属性可以控制它。您能否提出一些实现这一目标的方法。下面是演示要求的图像。

按钮 1 表示默认情况下文本的显示方式。而Button 2就是要实现的输出。

【问题讨论】:

    标签: c# .net vb.net winforms button


    【解决方案1】:

    我建议您使用图像而不是使用文本。将图像设置为按钮背景图像或简单按钮图像,然后您可以使用对齐属性将文本移动到任何角落。

    【讨论】:

    • 我需要使用文本,因为总共会有 1000 多个按钮,并且有尽可能多的带有文本的背景图像并不理想。此外,为了更改字体,我们必须替换图像。不是个好主意。
    • 那是wpf按钮控件:(
    【解决方案2】:

    为了这种自定义,您需要创建一个自定义的 winforms 控件。

    查看这篇CP文章http://www.codeproject.com/Articles/4871/Divider-Panel-A-tutorial-on-creating-a-custom-Wind

    【讨论】:

      【解决方案3】:

      无需驱动自己的类,在 C# 和 VB 中的 Button 类上都有一个属性..

      VB

      Me.Button2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
      

      C#

      this.button1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
      

      快乐的编码和分享.. :)

      【讨论】:

      • @Harsh 如果有效,请接受答案,以便其他人在需要时可以找到它的用处..
      • 我认为 OP 已经知道这一点......但如果你仔细阅读这个问题,你会发现这并没有解决问题,因为边框和文本之间有一个空格。跨度>
      • 是的@SysDragon。这并不能解决问题。边框和文本之间还有一个空格。 TextAlign 已设置为左中。
      • 那么这个答案实际上根本没有用。 -1
      • 我不明白你为什么这么说。做什么的?你所有的答案都没有用吗?此答案没有添加任何新内容,您应该考虑将其删除或编辑以提供解决方案。
      【解决方案4】:

      您需要处理按钮的 Paint 事件才能在 Button 上绘制字符串。

      喜欢:

      Private Sub Button1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint
              Button1.Text = String.Empty
              e.Graphics.DrawString("Test", Button1.Font, Brushes.Black, New Point(0, 5))
      End Sub
      

      并设置FlatStyle、BorderColor、BorderSize属性:

      按钮 UI 的输出:

      【讨论】:

        猜你喜欢
        • 2016-09-25
        • 2017-05-02
        • 2013-08-22
        • 1970-01-01
        • 2015-12-29
        • 1970-01-01
        • 2021-11-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多