2012-09-24 349 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

ああ、私は彼を嫌っていましたが、彼にチャンスを与えましょう。 – 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

このような行動規範はありません。これはQ&Aサイトです。これは、他の人が時間を浪費するのを防ぐことができる情報の知識ベースを意図しています。あなたのいわゆる行動規範について言及しているFAQに私を指摘してください。 –

+0

それは間違っていません。 「」は、少し話題を外して、誰でも質問をすることができます。怠け者であっても、貧弱な人でも...敬意を払うことを期待しないでください。コードの熱意はここで尊敬できる唯一のものです。 ' ' – fernandoespinosa

+0

質問の編集履歴に行ってきました。今私はあなたが元の質問に興奮していなかった理由を見ます。 :-) –

2

TableLayOutPanel自体はCellBorderStyle除いて、境界線のプロパティをサポートしていません。あなたが望むものではありません。

PanelLayOutPanelをPanelコントロールに配置し、TableLayOutPanelのDockプロパティをFillに設定することをお勧めします。あなたが何をしたいのパネルの

次にセットのBorderStyle(FixedSingleまたはFixed3D)

3

TableLayoutPanelが実際に何をしたいですBorderStyleプロパティを、サポートしています。たとえば:

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

ありがとうございます。そう簡単ではない解決策です! –

関連する問題