2015-09-05 10 views
6

Grundsätzlich habe ich ein Problem mit dem Entfernen der Polsterung/Rand zwischen den Steuerelementen in einem Tableaus Panel.C# tablelayoutpanel kann Padding/Rand nicht entfernen

Ich habe den Tabellayoutpanel Rand und Padding auf 0 gesetzt. Cellborderstyle ist keine.

Hinzugefügte Steuerelemente werden für Rand und Padding auf 0 gesetzt.

Doch dieser mysteriöse Rand erscheint immer wieder. Irgendeine Hilfe?

Versucht diese 2 Lösungen hier und verschiedene andere im Web, aber keiner konnte diesen Abstand dazwischen entfernen.

auf VS2010 Rennen, .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; 
    } 
} 
} 

Desi 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; 
    } 
} 

Antwort

3

Sie sind das falsche Problem zu jagen, wird diese Lücke durch das Button-Steuerelement verursacht, nicht die Table. Etwas, das Sie deutlich sehen können, wenn Sie mit dem Designer eine Schaltfläche auf dem Formular ablegen, beachten Sie die Lücke zwischen dem Auswahlrechteck und der Schaltflächenoberfläche.

Sie müssen mit dem Knopf basteln, um es loszuwerden oder eine andere Art der Steuerung zu verwenden. Einfachste Weg ist es flach zu machen:

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

die BorderSize Zuordnung entfernen, wenn Sie ein Raster sehen möchten.

+0

Vielen Dank! Das hat gut geklappt. – Tim

0

konfrontiert ich das gleiche Problem, während in verschiedenen Steuer mit TableLayoutPanel

du

  1. Go Ansicht
  2. klicken Sie auf das Design auf die Eigenschaften
  3. GoTo Spalten tun können, wenn Sie Text klicken Neben Spalten erscheint eine Schaltfläche (...) ganz rechts in der Textbox, klicken Sie darauf
  4. Ein Popup-Fenster erscheint, wählen Sie AutoSize (statt Absolut oder Prozent).
  5. Im selben Fenster unter Show:Rows auswählen und erneut Autosize auswählen.
  6. Klicken Sie auf OK und Sie sind fertig.