我想创建带有两个文本的按钮:一个左边(文本标签本身)和一个右边(热键)对齐,可能还有一个图像。下面的截图来自类似的应用程序(不是我的!)
支持多行文本会很不错,就像图像中的按钮F1-F6一样,但我可以没有它。我不需要F8按钮的“始终按下状态”。
我正在使用C#和Windows表单。
编辑: 显然,这在WPF中非常简单。从未在WPF中做过任何事情,但肯定会看看。
答案 0 :(得分:4)
以下是您可能满意的解决方案:
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
屏幕截图