C# - TableLayoutPanel Schneiden Von Off-Label-String

Bin ich eine Tabelle erstellen layout-panel zur Anzeige der Werte aus einem Wörterbuch, aber das table layout panel hält schneiden Sie die Label-Steuerelemente, die ich in die Zellen von 14 Zeichen. Ich habe versucht, die Geige mit der ColumnStyles von meinem Tisch layout-panel, aber keine der Optionen wird das Label-Steuerelement ist eigentlich 'passen' in die Zelle. Ich habe versucht, alle verfügbaren Spalte Stil SizeTypes:

Auto-Größe (Etiketten mit text-Werte sind zugeschnitten auf 14 Zeichen ("1234567890ABCD") jedes mal, wenn Spalten mit keine Steuerelemente vorhanden (Abstandshalter) sind geschrumpft zu nichts)

Prozentsatz (keinerlei Auswirkung - keine Spalten verbreitert, auch wenn ich gewichtete die Spaltentypen (Wert, Schlüssel, Raum) werden in verschiedenen Größen).

Absolute (macht den Spalten x Pixel breit ist, aber die Beschriftungen sind immer NOCH abgeschnitten zu 14 Zeichen lang sein - selbst wenn die Zelle ist 1.000 Pixel breit)

Habe ich auch versucht, messing mit der Size-Eigenschaft des Labels, aber ich kann nicht editieren, weil ich "Nicht ändern Sie den Rückgabewert von" System.Windows.Formen.Kontrolle.Size', weil es keine variable" (was auch immer das bedeutet).

So, unter Ausschöpfung aller dieser Möglichkeiten, wie mache ich das ganze Etikett erscheinen in der Tabelle die Zelle, ohne abgeschnitten zu 14 Zeichen?

Hier ist der code, der die Generierung der table-layout-Fenster. Es ist mit einer custom class die ich gebaut (GridDisplay), hält eine Liste von Objekten (GridDisplayCell) enthalten, eine Steuerung, eine Zeile, eine Spalte mit der Nummer, und ein paar andere Felder. Die Klasse können Sie mich hinzufügen/entfernen/verschieben/einfügen von Steuerelementen auf der Liste, und erstellen Sie dann die Tabelle layout alle in einem Rutsch mit der Generate () - Funktion (anstatt festzustellen, seine Größe im Voraus oder in der Größe, wie ich es Elemente hinzufügen).

       private void FillInCustomerData()
    {
        GridDisplay grid = new GridDisplay(tl_TopLeft);
        int rowMax = 8;
        int columnLabelIndex = 0;

        int curRow = 0;
        int curCol = 0;

        foreach (var item in DD.AllCustomerData["BasicInfo"]) //Dictionary<string, object>
        {
            if (curRow == rowMax)
            {
                curRow = 0;
                curCol = columnLabelIndex + 2; //1 for key column, 1 for value column
            }

            var keyLabel = new Label();
            keyLabel.Text = item.Key;

            var valueLabel = new Label();
            valueLabel.Text = (item.Value == null || item.Value.ToString() == "") ? "NA" :  "1234567890ABDCDEF"; //item.Value.ToString()

            var key = grid.AddItem(new GridDisplayCell(item.Key, keyLabel), item.Key, curRow, curCol);
            //Function Definition: GridDisplay.AddItem(GridDisplayCell(string cellName, Control control), string cellName, int rowNumber, int colNumber)                
            var value = grid.AddItem(new GridDisplayCell(item.Key + "Value", valueLabel), item.Key + "Value", curRow, curCol+1);

            curRow++;
        }

        grid.WrapMode = false;
        grid.AutoSize = true;

        grid.Generate();

        //experimenting with column sizes. NOT WORKING
        foreach (ColumnStyle cs in grid.Table.ColumnStyles)
        {
            cs.SizeType = SizeType.AutoSize;
        }            
    }

Und hier das Stück meiner Funktion generieren, die tatsächlich fügt die Steuerelemente, um das TableLayoutPanel: (_cells ist die Liste der GridDisplayCells, und AutoSize-Eigenschaft GridDisplay in diesem Fall (nicht das TableLayoutPanel AutoSize-Eigenschaft))

 foreach (var cellItem in _cells)
            {
                if (AutoSize == false && ValidateSize(cellItem.Value.Column, cellItem.Value.Row, false) == false)
                {
                    continue; //the cell was outside the range of the control, so we don't add it.
                }

                _table.Controls.Add(cellItem.Value.CellControl, cellItem.Value.Column, cellItem.Value.Row);
            }

Jede Hilfe ist willkommen.

InformationsquelleAutor Richard | 2012-09-26
Schreibe einen Kommentar