2010-06-21 45 views
10

我想在WinForms應用程序中創建一個簡單的3D線,以改進我的表單佈局的可視佈局。 這行非常像關於Windows對話框中的行(可以在Windows資源管理器 - >幫助 - >關於Windows中打開)。如何在WinForms應用程序中創建一行?

一個例子進行檢查here。最後一行(3D)是我想要的,而不是第一行。

如何在C#或Visual Basic(.NET)做些什麼呢?

感謝

回答

7

如果使用SysInternals的ZoomIt實用程序,可以看到這只是兩行。白色之上的深灰色。使用Graphics.DrawLine()繪製線條非常簡單,您只需確保選擇與該窗體的BackColor配合良好的深色。如果用戶選擇另一個主題,那並不總是灰色的。這使GroupBox技巧下降。

此示例代碼是維修:

protected override void OnPaint(PaintEventArgs e) { 
     Color back = this.BackColor; 
     Color dark = Color.FromArgb(back.R >> 1, back.G >> 1, back.B >> 1); 
     int y = button1.Bottom + 20; 
     using (var pen = new Pen(dark)) { 
      e.Graphics.DrawLine(pen, 30, y, this.ClientSize.Width - 30, y); 
     } 
     e.Graphics.DrawLine(Pens.White, 30, y+1, this.ClientSize.Width - 30, y+1); 
    } 

注意使用此代碼按鈕1,有以確保在行權高度繪製,即使形式重新調整。選擇您自己的控件作爲該行的參考。

2

一種方法是創建一個不帶標籤和高度0一組框(或者是1,也不太記得了) - 我知道我以前用過的那招,即使感覺有點哈克:-)

+0

嗨@Tor,我試過一次,但如果用戶在Windows中使用皮膚,這可以使線看起來很奇怪! 我正在尋找和替代這種技術。 – RHaguiuda 2010-06-21 18:26:04

3

我也已經使用了GroupBox hack和它有基於操作系統邊境主題造型本身的利益。

也有VB Power Packs控件集合在一個Line類。那裏還有其他一些我們也用過的好東西。

編輯:這是我的Seperator類,用於使用上述方法繪製水平線。

public class Separator : GroupBox 
{ 
    // Methods 
    protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified) 
    { 
     base.SetBoundsCore(x, y, width, 3, specified); 
    } 

    // Properties 
    [DefaultValue("")] 
    public override string Text 
    { 
     get 
     { 
      return string.Empty; 
     } 
     set 
     { 
     } 
    } 
} 
44

添加一個Label控件具有三維邊框並沒有文本,然後將高度設置爲2

+0

謝謝。這工作完美。 – RHaguiuda 2013-01-22 09:46:38

1

您可以通過添加標籤並設置其文字下劃線得到一個行分隔符效應「_」

相關問題