我使用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;
}
}
应该删除红色箭头,并且在那里应该有绿色箭头。
是什么让我错了,为什么它不删除列标题?
答案 0 :(得分:0)
您应该清除DataGrid
或GridView
中的列:
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");
}
}
我希望有人可以将其用作解决方法,对我来说,它可以表现出友好的愿望。