任何人都可以识别哪种类型的Windows窗体控件选择要编辑的签名,选择默认签名,以及编辑签名是否在Microsoft Outlook插入签名模式中?我无法弄清楚它是否是一个超级笨拙的小组,或者它是否是我找不到的其他控件?
答案 0 :(得分:3)
它们根本不是控制。您在该对话框中看到的大多数内容都是我称之为“伪控件”的内容,即绘制的内容和操作控件,但没有系统窗口。您可以通过使用间谍工具查找(不存在的)系统窗口来查看此内容。
你可以使用Graphics.DrawText和ControlPaint.DrawXXX自己实现这一点,我不确定XXX。也许是Border,还是3DBorder?
这是一个廉价而肮脏的例子。我使用了WinForms Label控件,因为它很简单。
using System;
using System.Drawing;
using System.Windows.Forms;
public class Form1 : Form
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public Form1()
{
ClientSize = new Size(400, 200);
Controls.Add(new LineLabel { Text = "Edit signature", Location = new Point(10, 10), Anchor = AnchorStyles.Left | AnchorStyles.Right, Width = 380 });
}
}
public class LineLabel : Label
{
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
SizeF textSize = e.Graphics.MeasureString(this.Text, this.Font);
int leftWidth = (int)(textSize.Width + 2);
Rectangle bounds = new Rectangle(leftWidth, Height / 2 - 4, Bounds.Width - leftWidth, 2);
ControlPaint.DrawBorder(e.Graphics, bounds, Color.DarkGray, ButtonBorderStyle.Solid);
}
}
答案 1 :(得分:1)
他们是GroupBoxes,虽然看起来边界有点修改。 如果你想自己定制,你可以为WinForms组合框(在某种程度上)做到这一点,但它将更容易使用WPF Groupbox并阅读Styling a GroupBox中的样式。