如何在 C# 中的 TableLayoutPanel 中显示字典的内容?
How to display the content of a dictionary in a TableLayoutPanel in C#?
我需要在名为 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() 的重载来修复 "problem"只有一个控件。然后将按预期添加标签。
简化代码:
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);
}
}
我需要在名为 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() 的重载来修复 "problem"只有一个控件。然后将按预期添加标签。
简化代码:
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);
}
}