我想创建包含两个文本的按钮:一个左(文本标签本身)和一个右(热键)对齐,并且可能是图像。下面的截图来自一个类似的应用程序(不是我的!)
支持多行文本会很好,就像图像中的按钮F1-F6一样,但我可以没有它。我不需要F8键的“常按状态”。我使用C#和Windows窗体。编辑:显然这在WPF中非常简单。从来没有在WPF做过任何事情,但一定会看看。
8qgya5xd1#
以下是您可能满意的解决方案:
public class XButton : Button { public XButton() { UseVisualStyleBackColor = false; TextImageRelation = TextImageRelation.ImageAboveText; } public override string Text { get { return ""; } set { base.Text = value;} } public string LeftText { get; set; } public string RightText { get; set; } protected override void OnPaint(PaintEventArgs pevent) { base.OnPaint(pevent); Rectangle rect = ClientRectangle; rect.Inflate(-5, -5); using (StringFormat sf = new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Far }) { using (Brush brush = new SolidBrush(ForeColor)) { pevent.Graphics.DrawString(LeftText, Font, brush, rect, sf); sf.Alignment = StringAlignment.Far; pevent.Graphics.DrawString(RightText, Font, brush, rect, sf); } } } } //Use it xButton1.Image = yourImage; xButton1.LeftText = "How interesting winforms is"; xButton2.RightText = "F12"; //You can add more properties to this XButton class to control how it looks
屏幕截图
1条答案
按热度按时间8qgya5xd1#
以下是您可能满意的解决方案:
屏幕截图