识别Windows窗体中的控件

时间:2013-01-29 19:07:41

标签: c# winforms visual-studio-2010

任何人都可以识别哪种类型的Windows窗体控件选择要编辑的签名,选择默认签名,以及编辑签名是否在Microsoft Outlook插入签名模式中?我无法弄清楚它是否是一个超级笨拙的小组,或者它是否是我找不到的其他控件?

enter image description here

2 个答案:

答案 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中的样式。

必读也是MSDN - How To Define a GroupBox Template