2009-03-28 40 views
1

WinFormsには、CSSからボーダーコラプスをエミュレートする方法はありますか?"折りたたみ" WinFormsのパネルコントロールボーダー

これを想像してみましょう:FixedSingleの枠線を持つPanelコントロールがあり、これは1pxの黒い枠線をフォームの上部にドッキングしています。同じ境界線を持つ第2のPanelコントロールを追加し、最初のPanelの下にそのPanelを積み重ねるように上にドッキングします。問題は、上部パネルの下部が下部パネルの上部に接触するところで、境界は2px幅になります(上部パネルの下部(1px)+下部パネルの上部(1px)= 2px)。

私はPanelコントロールのプロパティを使いこなしていましたが、これらのタッチするエッジが重なっているため、パネル間に1pxの境界線しかありませんでした。誰にでもアイデアはありますか?

(私はVisual Basic .NETの2008を使用しています)

答えて

1

独自のパネル派生コントロールを作成するだけです。あなたが望むようにそれを描くことによってボーダーを偽造する。例:

using System; 
using System.Drawing; 
using System.Windows.Forms; 

public class MyPanel : Panel { 
    public MyPanel() { 
    this.Dock = DockStyle.Top; 
    this.DoubleBuffered = true; 
    this.SetStyle(ControlStyles.ResizeRedraw, true); 
    } 
    protected override void OnPaintBackground(PaintEventArgs e) { 
    base.OnPaintBackground(e); 
    int y = this.ClientSize.Height - 1; 
    int x = this.ClientSize.Width-1; 
    e.Graphics.DrawLine(Pens.Black, 0, 0, 0, y); 
    e.Graphics.DrawLine(Pens.Black, 0, y, x, y); 
    e.Graphics.DrawLine(Pens.Black, x, 0, x, y); 
    } 
} 

新しいクラスをプロジェクトに追加し、上記のコードを貼り付けます。コンパイル。新しいコントロールをツールボックスの上部からフォームにドロップします。

+0

私は月曜日にこれを試してみます。ありがとう! – HardCode

0

ほとんどの組み込みコントロールと同様に、パネルの境界線のプロパティは、プロパティのすべてか無かの一種です。パネルのどの辺に境界線を付けるかを指定すると便利ですが、まったくありません。セル数が少ないグリッドスタイルのビューを作成することを目的としている場合は、データ(および関連するグリッド線)を1つのパネルに直接描画する方がよい場合があります。

関連する問題