我創建了一個表格佈局面板來顯示字典中的值,但是表格佈局面板不斷切割我放入14個字符的單元格中的Label控件。我試圖擺弄我的表格佈局面板的ColumnStyles,但沒有任何選項會使Label控件實際適合單元格。我已經嘗試了所有可用的列樣式SizeTypes:C# - TableLayoutPanel切割標籤字符串
自動尺寸(帶有文本值的標籤每次裁剪爲14個字符(「1234567890ABCD」),儘管不存在任何控件的列(間隔符)收縮爲空)
百分比(沒有任何影響 - 即使我將列類型(值,鍵,空間)加權爲不同大小,也沒有列變寬。
絕對(使列×像素寬,但唱片公司在14個字符STILL切斷 - 即使電池是1000個像素寬)
我也試着與標籤的大小屬性搞亂,但我不能編輯,因爲我「無法修改」System.Windows.Forms.Control.Size「的返回值,因爲它不是一個變量」(無論這意味着什麼)。
因此,我已經耗盡了所有這些選項,如何在表格單元格中顯示完整標籤而不會在14個字符處截斷?
下面是生成表格佈局面板的代碼。它使用我構建的自定義類(GridDisplay),它保存包含控件,行號,列號和其他一些字段的對象列表(GridDisplayCell)。該類讓我添加/刪除/移動/插入控件到列表中,然後使用Generate()函數一次性構建表格佈局(而不是事先確定它的大小,或者在我添加項目時重新調整它的大小)。
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;
}
}
這是我的生成功能塊,實際上增加了控制到TableLayoutPanel中:(_cells是GridDisplayCells的名單,並自動調整大小是GridDisplay在這種情況下(屬性並非TableLayoutPanel中的AutoSize屬性))
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);
}
任何幫助表示讚賞。