使用面板而不是按钮

问题描述 投票:-1回答:2

我计划将面板用作与Visual Studio安装程序相同的按钮。

问题是我在面板上添加了一些文字,当鼠标移到文本顶部时,它似乎超出了面板区域。

你有什么建议吗?使用面板而不是按钮是否合适?

enter image description here

c# winforms button
2个回答
0
投票

我通过使用以下链接从按钮扩展一个类来解决我的问题:Ref Link

public class MYButton:Button
    {
        public MYButton()
        {
            UseVisualStyleBackColor = false;
            TextImageRelation = TextImageRelation.ImageAboveText;

        }
        public override string Text
        {
            get { return ""; }
            set { base.Text = value; }
        }
        public string TextCenter { get; set; }
        public string TextDetails { get; set; }

        Font fontTextCenter { get; set; }
        Font fontTextDetails { get; set; }

        protected override void OnPaint(PaintEventArgs pevent)
        {
            fontTextCenter = new Font("Microsoft Sans Serif", 22F, FontStyle.Bold);
            fontTextDetails = new Font("Microsoft Sans Serif", 8F);
            base.OnPaint(pevent);
            Rectangle rect = ClientRectangle;
            rect.Inflate(-5, -5);

            StringFormat sf = new StringFormat();
            sf.FormatFlags = StringFormatFlags.NoWrap | StringFormatFlags.NoClip;

            sf.Alignment = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Center;

            Brush brush = new SolidBrush(ForeColor);
            pevent.Graphics.DrawString(TextCenter, fontTextCenter, brush, rect, sf);

            sf.Alignment = StringAlignment.Near;
            sf.LineAlignment = StringAlignment.Far;
            sf.FormatFlags = StringFormatFlags.LineLimit | StringFormatFlags.NoClip;

            pevent.Graphics.DrawString(TextDetails, fontTextDetails, brush, rect, sf);


        }


    }

-2
投票

那这个呢?使用文本在面板上覆盖透明面板,并基于透明面板响应鼠标。

© www.soinside.com 2019 - 2024. All rights reserved.