我需要在名为UCoutputPredictionsResults
的TableLayoutPanel中显示名为PredictionDictionary
的字典的内容,并且在第一列中有名称,在第二列中有值。 在我的字典中,所有键和值都有字符串类型。
我可以显示键和值,但不能按我请求的顺序显示
下面是我所做的:
this.ucOutputPredictionsResults.RowCount = 0;
this.ucOutputPredictionsResults.ColumnCount = 0;
foreach (KeyValuePair<string, string> kvp in (_testExecution as TestExecutionAlveoGraph)
.predictionDictionary)
{
Label lb = new Label();
lb.Text = kvp.Key;
this.ucOutputPredictionsResults.Controls.Add(lb,
this.ucOutputPredictionsResults.ColumnCount,
this.ucOutputPredictionsResults.RowCount);
Label valueLbl = new Label();
valueLbl.Text = kvp.Value;
this.ucOutputPredictionsResults.Controls.Add(valueLbl,
this.ucOutputPredictionsResults.ColumnCount +1,
this.ucOutputPredictionsResults.RowCount);
}
但结果并不是我预想的那样:
虽然我同意TaW的观点,即您应该显式地设置TableLayoutPanel并以更受控制的方式添加控件,但是您可以通过将ColumnCount设置为2并使用仅接收控件的add()重载来修复“问题”。 标签将按预期添加到那时。
简化代码:
private void button1_Click(object sender, EventArgs e)
{
this.ucOutputPredictionsResults.Controls.Clear();
this.ucOutputPredictionsResults.RowCount = 0;
this.ucOutputPredictionsResults.ColumnCount = 2;
foreach (KeyValuePair<string, string> kvp in _testExecution)
{
Label lb = new Label();
lb.Text = kvp.Key;
this.ucOutputPredictionsResults.Controls.Add(lb);
Label valueLbl = new Label();
valueLbl.Text = kvp.Value;
this.ucOutputPredictionsResults.Controls.Add(valueLbl);
}
}