質問

でも興味のある人を制御で以下のように直線でのラベルです。また同様の制御でありなしなグループボックスの設定なので、私はただ、Windowsの高さの2つを再現するのです。

だが実際に制御または設定するのか?とは何か、実際に制御す。

Internet Options property dialog

役に立ちましたか?

解決

スパイ++ 私は実は別 STATIC 制御Label ォ).

  • 最初は単に通常の静的なテキストを制御することは"ホームページ"を表示します。

  • 第二の SS_ETCHEDHORZ スタイル セットで描画として、3D。残念ながらの設定このスタイルが公開されることはありません米国内からのポートしています。

どの質問がありhacks/回避策により達成同様の、のように垂直に圧縮 GroupBox 制御、またはオーバーライドの OnPaint 方法 Label 制御用の ControlPaint クラスを描く3Dます。で、でもそんなに好きです。

がす ができ 実際に設定 SS_ETCHEDHORZ スタイルを自分でできるよう複製のネイティブのUIです。ここでちょっとクラスとなった。に追加し、プロジェクトをコンパイル、また新たな制御がツールボックスという"HorizontalRule".使用すようにその他のすくなります。

public class HorizontalRule : Control
{
    private const int FixedHeight   = 2;

    private const int WS_CHILD      = 0x40000000;
    private const int WS_VISIBLE    = 0x10000000;
    private const int SS_ETCHEDHORZ = 0x00000010;
    private const int SS_ETCHEDVERT = 0x00000011;

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ClassName = "STATIC";
            cp.Style = WS_CHILD | SS_ETCHEDHORZ;
            if (this.Visible)
            {
                cp.Style |= WS_VISIBLE;
            }
            return cp;
        }
    }

    protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
    {
        height = FixedHeight;
        base.SetBoundsCore(x, y, width, height, specified);
    }
}

を見ることができまより詳細な情報および追加のサンプルコード ここではCodeProject.

他のヒント

数年前に同じ問題が発生し、目的のために線を引くだけで終わりました。

実際、私は十分に長い幅の固定線画像を1つ使用したので、画像の必要な部分(幅)を表示することですべての場合に使用できました。

このソリューションはそれ以来、私にとっては問題なく機能しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top