C# ListView控件行列转换 - 显示Follow集
private void button2_Click(object sender, EventArgs e)
{
// 获取所有的符号集合
List<string> symbols = new List<string>();
foreach (var item in production.Keys)
{
if (!symbols.Contains(item))
symbols.Add(item);
foreach (var prod in production[item])
{
foreach (var c in prod)
{
if (!symbols.Contains(c.ToString()))
symbols.Add(c.ToString());
}
}
}
// 将符号集合按照终结符和非终结符分开
nonterminals = new List<string>();
terminals = new List<string>();
foreach (var s in symbols)
{
if (char.IsUpper(s[0]))
nonterminals.Add(s);
else
terminals.Add(s);
}
listView2.Clear();
listView2.Columns.Add('', 30, HorizontalAlignment.Center);
// 使用非终结符作为行标题
ListViewItem[] items = new ListViewItem[nonterminals.Count];
for (int i = 0; i < nonterminals.Count; i++)
{
items[i] = new ListViewItem(nonterminals[i]);
// 使用终结符作为列标题
for (int j = 0; j < terminals.Count; j++)
{
if (follows[nonterminals[i]].Contains(terminals[j]))
{
items[i].SubItems.Add('1');
}
else
{
items[i].SubItems.Add('0');
}
}
}
listView2.Items.AddRange(items);
listView2.View = View.Details;
listView2.GridLines = true;
listView2.FullRowSelect = true;
}
原文地址: https://www.cveoy.top/t/topic/fXDm 著作权归作者所有。请勿转载和采集!