c# - 为什么我在 Datagrid 中已经有了 Columnheader?

标签 c# wpf

我有一个 DataGrid,其中包含上次监控中的一些“旧”列,现在当我开始新的监控时,我会观察下一次需要多少列,然后创建或删除这些列。

语法如下

if (anzAlteVar < anzNeueVar)
{
    DataGridTextColumn textColumn = new DataGridTextColumn();
    int zahler = 1;
    string szahler;

    for (int j = 0; j <= dgTable3.Columns.Count - 1; j++)
    {
        szahler = zahler.ToString();
        dgTable3.Columns[j].Header = szahler;
        zahler++;
    }

    while (dgTable3.Columns.Count() != anzNeueVar)
    {
        szahler = zahler.ToString();
        textColumn.Header = szahler;
        dgTable3.Columns.Add(textColumn);
        zahler++;
    }
}

//übernimmt die neuen Header in das Datagrid
for (int i = 0; i <= dgTable3.Columns.Count-1; i++)
{
    dgTable3.Columns[i].Header = inhaltVar[i, 0];
}

我的问题在行 dgTable3.Columns.Add(textColumn); 在第二个 while 循环传递我得到错误

System.ArgumentException

因为我有两列同名。

我的问题:我怎么可能有两次相同的名字?我的意思是每次循环时我都会更改标题,并在给出新名称后添加它们。我在调试器上看了它,在它们上我每个标题只有一次,请帮助我并写下我做错了什么以及我必须更改什么。

友情祝福嗅嗅

最佳答案

在循环中而不是在外部创建新列。 DataGridTextColumn textColumn = new DataGridTextColumn();

在您的例子中,它指的是同一列,这就是它返回错误的原因。

while (dgTable3.Columns.Count() != anzNeueVar)
{
    szahler = zahler.ToString();

    DataGridTextColumn textColumn = new DataGridTextColumn();
    textColumn.Header = szahler;

    dgTable3.Columns.Add(textColumn);
    zahler++;
}

关于c# - 为什么我在 Datagrid 中已经有了 Columnheader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56574956/

相关文章:

c# - 计算系列中的超出数量

c# - 访问 IEnumerable 清除内容

c# - 引发 "potentially dangerous Request.Form value"错误的条件是否取决于 .NET 配置和版本?

c# - 如何反序列化此 JSON 字符串?

c# - WPF 将 RichTextBox 打印为图像

c# - WPF 过滤器 ObservableCollection 与 ICollectionView

c# - 未处理的异常后终止应用程序

c# - 在 WPF 中更改 EventTrigger 上的按钮背景颜色

wpf - 在 MVVM 模式中刷新 DataGrid

java - 处理未使用的 return 语句