2015-04-03 6 views
8

Ich habe eine MigraDoc-Tabelle, wo ich eine Zeilenhöhe von 0,75 cm angeben, und der Text wird in der Mitte der Zelle vertikal ausgerichtet. Wenn ich cell.Format.Shading.Color auf etwas Nicht-Weiß setze, ist immer noch ein Teil der Zelle in der Nähe des Randes, der an allen vier Seiten weiß dargestellt ist.So legen Sie die Hintergrundfarbe einer Zelle in einer MigraDoc-Tabelle fest

Ich entdeckte, dass ich den weißen Bereich links und rechts vom Text entfernen kann, indem ich column.LeftPadding = 0 und column.RightPadding = 0 setze. Ich kann jedoch nicht herausfinden, wie man die weißen Streifen oben bekommt/Der untere Teil des Textes verschwindet, ohne die vertikale Ausrichtung des Textes zu beeinflussen. Wenn ich die Höhe der Absatzlinie auf 0,75 cm ändere, verschwinden die Streifen, aber der Text wird dann in der Zelle nach unten ausgerichtet. Ich kann die Farbe der Spaltenschattierung nicht festlegen, da jede Zelle in der Spalte eine andere Farbe enthält. Kennt jemand eine Möglichkeit, den Absatz zu zwingen, die Zelle vertikal zu füllen (oder andernfalls die Hintergrundfarbe in der Zelle einheitlich zu machen)?

Hier ist eine Probe von meinem Code (in C#), wo Tabelle vom Typ MigraDoc.DocumentObjectModel.Tables.Table ist:

... 

// Add a column at index #2 
var column = table.AddColumn(); 
column.LeftPadding = 0; 
column.RightPadding = 0; 

// Add more columns 
... 

// Iterate through the data printed in each row 
foreach (var rowData in myData) 
{ 
    // Create a row for the data 
    var row = table.AddRow(); 
    row.Height = ".75cm"; 
    row.Format.Font.Size = 11; 
    row.VerticalAlignment = VerticalAlignment.Center; 

    ... 

    // The following is for illustrative purposes... the actual 
    //  colors and text is determined by the data within the cell 
    var cell = row.Cells[2]; 
    cell.Format.Shading.Color = Colors.Black; 
    cell.Format.Font.Color = Colors.White; 
    var paragraph = cell.AddParagraph("Example"); 

    ... 
} 

Antwort

14

Versuchen cell.Shading.Color statt cell.Format.Shading.Color - die ehemaligen setzt die Farbe der Zelle, Letzteres legt die Farbe des Texthintergrunds fest (und das Padding der Zelle wird dann eine andere Farbe haben).

+0

Ich wusste, dass es einen Weg geben musste, dies richtig zu machen. Mein hacky Workaround war, einen zusätzlichen Absatz hinzuzufügen und die Zeilenhöhe der zwei Absätze einzustellen, bis die vertikale Ausrichtung übereinstimmte und die Zelle vollständig gefüllt war. –