为什么删除表头后,表头不为空?

时间:2019-05-28 13:25:38

标签: c# wpf

我使用Visual Studio 2019,C#和WPF。我尝试动态删除我的表头,问题是,它没有被删除。

程序运行:

首先,我选择变量并将其移动到tabe2(带有绿色箭头),然后从行中读取我的变量名并将它们设置为table3中的标题(带有红色箭头)。当我在table3内需要其他变量时,按下reloadbutton,应该删除table3标头和行。

重新加载按钮的代码:

  private void ButtonTableReloaded_Clicked(object sender, RoutedEventArgs e)
    {
        if (tableforDataStream.Rows != null)
        {
            ClearDataTable(tableforDataStream);
        }
        if (tableforDataStream.Columns != null)
        {
            for (int i = tableforDataStream.Columns.Count - 1; i >= 0; i--)
                tableforDataStream.Columns.RemoveAt(i);
        }
        if (dgTable1.Visibility == Visibility.Collapsed)
        {
            dgTable1.Visibility = Visibility.Visible;
            dgTable3.Visibility = Visibility.Collapsed;
        }
    }

应该删除红色箭头,并且在那里应该有绿色箭头。

enter image description here

是什么让我错了,为什么它不删除列标题?

2 个答案:

答案 0 :(得分:0)

您应该清除DataGridGridView中的列:

dgTable1.Columns.Clear();

答案 1 :(得分:0)

我不知道,为什么我不能删除我喜欢的标题,但是如果有人遇到相同的问题,我就有解决方法。

这是我的代码:

        private void CreateOverviewTable_Click(object sender, RoutedEventArgs e)
    {
        if (isConnected != 0)
        {
            int anzNeueVar = tableSelectedVar.Rows.Count;
            //Überprüft ob eine Variable zur Überwachung ausgewählt wurde
            if (anzNeueVar != 0)
            {
                //Macht das dgTable1 unsichtbar und macht dgTable3 an der Stelle von dgTable1 sichtbar
                dgTable1.Visibility = Visibility.Collapsed;
                dgTable3.Visibility = Visibility.Visible;

                //Erstellt ein Array welcher in der ersten Splate den Namen hat, in der zweiten die Adresse und in der dritten die Datengröße.
                string[,] inhaltVar = new string[anzNeueVar, 3];
                //Liest die Daten aus der Tabelle in den Array
                for (int i = 0; i <= anzNeueVar - 1; i++)
                {
                    for (int j = 0; j < 3; j++)
                    {
                        inhaltVar[i, j] = tableSelectedVar.Rows[i].ItemArray[j].ToString();
                    }
                }
                string[,] altInhaltVar = new string[anzNeueVar, 3];
                altInhaltVar = inhaltVar;
                int anzAlteVar = dgTable3.Columns.Count;
                //Erstellt eine Spalte für jeden Parameter welcher überwacht werden soll.
                for (int k = 0; k <= (inhaltVar.GetLength(0) - 1); k++)
                {
                    //erster Durchlauf
                    if (anzAlteVar == 0)
                    {
                        try
                        {
                            //Erstellt die Columns für jeden Parameter
                            //dgTable3.Columns.Add(inhaltVar[k, 0]);
                            tableforDataStream.Columns.Add(inhaltVar[k, 0]);
                        }
                        catch (Exception exc)
                        {
                            MessageBox.Show(exc.Message);
                        }
                    }
                    //min zweiter Durchlauf
                    else
                    {
                        //wenn zuviele Spalten vorhanden sind werden die übrigen gelöscht
                        if (anzAlteVar > anzNeueVar)
                        {
                            while (dgTable3.Columns.Count() != inhaltVar.GetLength(0))
                            {
                                dgTable3.Columns.RemoveAt(0);
                            }
                        }
                        //wenn zu wenig Spalten vorhanden sind werden neue hinzugefügt 
                        if (anzAlteVar < anzNeueVar)
                        {
                            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();
                                DataGridTextColumn textColumn = new DataGridTextColumn { 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];
                        }
                    }
                }
                //Schickt die Daten welche in Tabelle tableSelectedVar sind zur Maschine
                if (isConnected == 1)
                {
                    SendDataToMachine(inhaltVar);
                }
                else
                {
                    MessageBox.Show("Bitte erste die Verbindung herstellen bevor Daten an die Maschine geschickt werden");
                }

                //TestFunktion: Sendet was auch immer im Suchtextfeld steht
                //TestSend();
            }
            else
            {
                MessageBox.Show("Bitte mindestens eine Variable zur Ueberwachung bestimmen", null, MessageBoxButton.OK, MessageBoxImage.Information);
            }
        }
        else
        {
            MessageBox.Show("Bitte erst eine Verbindung zur Maschine Herstellen");
        }
    }

我希望有人可以将其用作解决方法,对我来说,它可以表现出友好的愿望。