如何在C#WinForms按钮中左右对齐文本?

如何在C#WinForms按钮中左右对齐文本?,c#,button,text-justify,C#,Button,Text Justify,抱歉,如果我错过了一篇现有的帖子,但是我看到的都是Android和CSS之类的,而不是C 我正在制作一个媒体管理器,当我搜索时,我有一个流布局面板,其中填充了一些按钮,这些按钮将启动与搜索匹配的电影。我想做的是有这样的按钮文本(假设管道是按钮的一侧): 我可以从一个方向证明,但不能同时从两个方向证明。可能吗?谢谢 一个选项是创建一个自定义按钮,该按钮继承自按钮,并覆盖其OnPaint事件(基于TaW的注释构建) 编辑:根据TaW的评论,使用语句添加到笔刷。您可以将UseCompatibleTex

抱歉,如果我错过了一篇现有的帖子,但是我看到的都是Android和CSS之类的,而不是C

我正在制作一个媒体管理器,当我搜索时,我有一个流布局面板,其中填充了一些按钮,这些按钮将启动与搜索匹配的电影。我想做的是有这样的按钮文本(假设管道是按钮的一侧):


我可以从一个方向证明,但不能同时从两个方向证明。可能吗?谢谢

一个选项是创建一个自定义按钮,该按钮继承自
按钮
,并覆盖其
OnPaint
事件(基于TaW的注释构建)


编辑:根据TaW的评论,使用语句添加到笔刷。

您可以将UseCompatibleTextRendering属性设置为true,然后使用TextAlign属性。TextAlign不支持块对齐。使用固定字体,你可以伪造它或者将文本与所有者合并绘制右对齐文本:
使用(StringFormat sf=new StringFormat(){Alignment=StringAlignment.Far,LineAlignment=StringAlignment.Center})e.Graphics.DrawString(“Sadasdas”,Font,Brush.DarkGoldenrod,button4.ClientRectangle,sf”)请将画笔放入using子句中。此外,为了获得更好的质量,在绘制控件时建议使用TextRenderer。太棒了!非常感谢,我喜欢我甚至可以设置不同面的颜色:)TaW,我根据你的评论修改了代码,现在看起来像:使用(SolidBrush lefttextbush等){使用(SolidBrush rightextbush等){使用(StringFormat sf…等等)是这样吗?谢谢!呃,这不能保存CR。事实上,我有他们自己的线路。
 public class DuelTextFieldButton : Button
{
    public string LeftText { get; set; }
    public string RightText { get; set; }
    public Color RightTextColor { get; set; }

    protected override void OnPaint(PaintEventArgs pevent)
    {
        base.OnPaint(pevent);

        using (SolidBrush leftTextBrush = new SolidBrush(this.ForeColor))
        {
            using (StringFormat sf = new StringFormat()
                    { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center })
            {
                pevent.Graphics.DrawString(LeftText, this.Font, leftTextBrush, this.ClientRectangle, sf);
            }
        }

        using (SolidBrush rightTextBrush = new SolidBrush(RightTextColor))
        {
            using (StringFormat sf = new StringFormat()
                    { Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Center })
            {
                pevent.Graphics.DrawString(RightText, this.Font, rightTextBrush, this.ClientRectangle, sf);
            }
        }
            
    }
}
 public class DuelTextFieldButton : Button
{
    public string LeftText { get; set; }
    public string RightText { get; set; }
    public Color RightTextColor { get; set; }

    protected override void OnPaint(PaintEventArgs pevent)
    {
        base.OnPaint(pevent);

        using (SolidBrush leftTextBrush = new SolidBrush(this.ForeColor))
        {
            using (StringFormat sf = new StringFormat()
                    { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center })
            {
                pevent.Graphics.DrawString(LeftText, this.Font, leftTextBrush, this.ClientRectangle, sf);
            }
        }

        using (SolidBrush rightTextBrush = new SolidBrush(RightTextColor))
        {
            using (StringFormat sf = new StringFormat()
                    { Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Center })
            {
                pevent.Graphics.DrawString(RightText, this.Font, rightTextBrush, this.ClientRectangle, sf);
            }
        }
            
    }
}