2015-09-05 230 views
6

基本的に、私はtablelayoutpanelのコントロール間のパディング/マージンを取り除くことに問題があります。C#tablelayoutpanelパディング/余白を取り除くことができません

私はtablelayoutpanel marginとpaddingを0に設定しました。 Cellborderstyleはnoneです。

追加されたコントロールは、マージンとパディングのためにすべて0に設定されています。

しかし、その不思議なマージンが現れ続けます。どんな助け?

この2つの解決策をウェブ上で試してみましたが、ウェブ上でこの2つの解決策を試しましたが、間にその間隔をなくすことはできませんでした。 VS2010上で実行

  • Is there any way to control thickness of cell border in TableLayoutPanel?

    • Remove spacing between cells in tablelayoutpanel in Windows form?

    • 、.NET 4.5

      のForm1.cs

      using System; 
      using System.Collections.Generic; 
      using System.ComponentModel; 
      using System.Data; 
      using System.Drawing; 
      using System.Linq; 
      using System.Text; 
      using System.Threading.Tasks; 
      using System.Windows.Forms; 
      
      namespace Multiply { 
          public partial class Form1 : Form { 
           public Form1() { 
            InitializeComponent(); 
            LoadBoard(10, 10); 
           } 
      
          private void LoadBoard(int col, int row) { 
           board.ColumnCount = col; 
           board.RowCount = row; 
           board.BorderStyle = BorderStyle.FixedSingle; 
      
           float colSize = 100f/col; 
           float rowSize = 100f/row; 
      
           board.ColumnStyles[0].SizeType = SizeType.Percent; 
           board.ColumnStyles[0].Width = colSize; 
           board.RowStyles[0].SizeType = SizeType.Percent; 
           board.RowStyles[0].Height = rowSize; 
      
      
           for (int x = 0; x < col; x++) 
            board.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, colSize)); 
      
           for (int x = 0; x < row; x++) { 
            board.RowStyles.Add(new RowStyle(SizeType.Percent, rowSize)); 
            for (int y = 0; y < col; y++) { 
             board.Controls.Add(CreateButton(x + "," + y), y, x); 
            } 
            Console.WriteLine(x); 
           } 
      
          } 
      
          private Button CreateButton(string text) { 
           Button a = new Button(); 
           a.Text = text; 
           a.Dock = DockStyle.Fill; 
           a.Margin = new Padding(0); 
           a.Padding = new Padding(0); 
           return a; 
          } 
      } 
      } 
      

      デジgner

      namespace Multiply { 
          partial class Form1 { 
           /// <summary> 
           /// Required designer variable. 
           /// </summary> 
           private System.ComponentModel.IContainer components = null; 
      
           /// <summary> 
           /// Clean up any resources being used. 
           /// </summary> 
           /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
           protected override void Dispose(bool disposing) { 
            if (disposing && (components != null)) { 
             components.Dispose(); 
            } 
            base.Dispose(disposing); 
           } 
      
           #region Windows Form Designer generated code 
      
           /// <summary> 
           /// Required method for Designer support - do not modify 
           /// the contents of this method with the code editor. 
           /// </summary> 
           private void InitializeComponent() { 
            this.board = new System.Windows.Forms.TableLayoutPanel(); 
            this.SuspendLayout(); 
            // 
            // board 
            // 
            this.board.ColumnCount = 1; 
            this.board.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); 
            this.board.Dock = System.Windows.Forms.DockStyle.Top; 
            this.board.Location = new System.Drawing.Point(0, 0); 
            this.board.Margin = new System.Windows.Forms.Padding(0); 
            this.board.Name = "board"; 
            this.board.RowCount = 1; 
            this.board.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); 
            this.board.Size = new System.Drawing.Size(368, 223); 
            this.board.TabIndex = 0; 
            // 
            // Form1 
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
            this.ClientSize = new System.Drawing.Size(368, 391); 
            this.Controls.Add(this.board); 
            this.Name = "Form1"; 
            this.Text = "Form1"; 
            this.ResumeLayout(false); 
      
           } 
      
           #endregion 
      
           private System.Windows.Forms.TableLayoutPanel board; 
          } 
      } 
      

    答えて

    3

    間違った問題を追跡していますが、このギャップはTableLayoutPanelではなくButtonコントロールによって発生します。デザイナーでフォーム上にボタンをドロップしたときに、選択矩形とボタンサーフェスの間隔に注意してください。

    ボタンを押して取り除くか、別の種類のコントロールを使用する必要があります。最も簡単な方法は、フラットにすることです。

    private Control CreateButton(string text) { 
         var a = new Button(); 
         a.FlatStyle = FlatStyle.Flat; 
         a.FlatAppearance.BorderSize = 0; // optional 
         // etc... 
        } 
    

    グリッドを表示する場合は、BorderSize割り当てを削除します。

    +0

    ありがとうございました!それは確かにうまくいった。 – Tim

    0

    TableLayoutPanel

    に異なる制御を使用している間、私はあなたがテキストをクリックすると、プロパティ

  • 後藤列に表示
  • クリックを設計するために、この

    1. 移動を行うことができ、同じ問題に直面しましたテキストボックスの右端にボタン(...)が表示されます。
    2. ポップアップウィンドウが表示されます。絶対またはパーセンテージ)。
    3. 同じウィンドウでShow:を選択してRowsを選択し、再度[自動サイズ変更]を選択します。
    4. OKをクリックすると、完了です。
  • 関連する問題