2012-09-24 147 views
6

例如,如果我有3行5列,則使用TableLayoutPanel。我只想繪製整個面板的外邊框。默認情況下,面板提供了CellBorderStyle,它將所有邊框添加到所有可用的單元格中。有什麼方法可以讓我們只設置外部邊界?僅爲TableLayoutPanel單元格繪製外部邊框

我在下面提供了一個示例代碼。

TableLayoutPanel tblPanel = new TableLayoutPanel; 
    tblPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; 
    Label lblName; 
    TextBox txtName; 
    Button btnAdd; 
    int colCnt = 0; 
    for(int rw =0; rw < 3; rw++) 
    { 
      lblName = new Label(); 
      lblName.Name = "mylabel" + rw.ToString(); 
      tblPanel.Controls.Add(lblName, colCnt, rw); 
      colCnt++; 

      txtName = new TextBox(); 
      txtName.Name = "mytext" + rw.ToString(); 
      tblPanel.Controls.Add(txtName, colCnt, rw); 
      colCnt++; 

      btnAdd = new Button(); 
      btnAdd.Name = "mybutton" + rw.ToString(); 
      tblPanel.Controls.Add(btnAdd, colCnt, rw); 

      colCnt = 0; 
    } 
+1

如果你不提供更多的上下文,你不可能得到很好的答案。你已經嘗試了什麼? –

+0

Yah,我只是在貶低他,但讓我們給他一個機會。 – fernandoespinosa

回答

5

我看到你是一個非常新的海報。這裏的行爲準則是​​,你真的應該展示你已經嘗試過的東西並找出技術問題。不要以這種方式提問(特別是那些讓你看起來像甚至沒有嘗試過任何東西的問題)。

這就是說,並試圖幫助你,你最好自己畫細胞邊界。這的大意如下的東西,然後自定義:

public TableForm() { 
     InitializeComponent(); 
     this.tableLayoutPanel.CellPaint += tableLayoutPanel_CellPaint; 
    } 

    private void tableLayoutPanel_CellPaint(object sender, TableLayoutCellPaintEventArgs e) { 
     e.Graphics.DrawLine(Pens.Black, e.CellBounds.Location, new Point(e.CellBounds.Right, e.CellBounds.Top)); 
    } 

在設計時: At design-time

在運行時: At runtime

+3

沒有這樣的行爲準則。這是一個問答網站。它的目的是成爲可以幫助他人避免浪費時間的信息知識庫。請向我指出它提到所謂的行爲準則的常見問題解答。 –

+0

不要誤會。 '''現在,有點偏離主題,任何人都可以提出問題,即使是出於懶惰和糟糕的製作......只是不期望得到太多的尊重......更不用說一個答案(他得到了答案)。代碼熱情是唯一值得尊敬的地方。'' – fernandoespinosa

+0

我去了並檢查了問題的編輯歷史。現在我明白了你爲什麼不對原始問題感到激動。 :-) –

2

TableLayoutPanel中本身不支持邊框屬性除了CellBorderStyle這不是你想要的。

我建議你把你的TableLayOutPanel放到一個Panel控件中,並將TableLayOutPanel的Dock屬性設置爲Fill。

然後設置面板的邊框你想要什麼(FixedSingle或Fixed3D)

3

TableLayoutPanel中事實上確實支持邊框樣式屬性,這是你想要的。例如:

tableLayoutPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 

https://msdn.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel.borderstyle(v=vs.110).aspx

裝飾有:

[Browsable(false)] 
[EditorBrowsable(EditorBrowsableState.Never)] 

所以智能感知不會拿出來給你,但它是記錄和它的作品。我不知道爲什麼它是不可瀏覽的。

+0

感謝您提供此信息。這是不太可能的簡單解決方案! –

相關問題