Ich habe eine tabcontrol (WinForm) mit einem Button "Close all nach rechts", die perfekt funktioniert. Jetzt bin ich beschäftigt mit "Alle nach links schließen". Ich nahm die paar Zeilen von "Close to the right" und änderte sie entsprechend, aber aus unbekannten und unerklärlichen Gründen funktioniert es nicht so, wie es sollte.Alle TabPages links schließen
Von der ausgewählten Registerkarte schließt es alle Registerkarten, aber wenn ich die Zeile ersetzen, die die Registerkarten mit einer MessageBox entfernen, dann bekomme ich die richtige Ausgabe. Unten ist mein Code.
tabpagenumber = (tabControl1.SelectedIndex+1);
if (tabControl1.TabCount > 1)
{
TabControl.TabPageCollection tabcoll = tabControl1.TabPages;
foreach (TabPage tabpage in tabcoll)
{
tabControl1.SelectedTab = tabpage;
if ((tabControl1.SelectedIndex+1) < tabpagenumber)
{
tabControl1.TabPages.Remove(tabpage);
// MessageBox.Show(tabpagenumber.ToString());
}
}
}
Below "Schließen Sie alle auf der rechten Seite" Code
arbeitet mirpagenumber = (tabControl1.SelectedIndex + 1);
if (tabControl1.TabCount > 1)
{
TabControl.TabPageCollection tabcoll = tabControl1.TabPages;
foreach (TabPage tabpage in tabcoll)
{
tabControl1.SelectedTab = tabpage;
int testb = tabControl1.TabCount;
if (pagenumber < (tabControl1.SelectedIndex + 1))
{
// closeToolStripMenuItem_Click(sender, e);
tabControl1.TabPages.Remove(tabpage);
}
}
}
Hinweis: Es kann etwas damit zu tun haben, dass die .Remove innerhalb der Foreach-Anweisung ist. Sie ändern die Auflistung, wenn die Foreach-Schleife erwartet, dass die Auflistung unveränderbar ist. –
Hallo Nathan. Entschuldigung, ich bin jetzt nicht bei dir. Aus meinen begrenzten Kenntnissen von C# sollte der .Remove innerhalb der foreach-Anweisung sein, um alle Tabs auf der linken Seite entfernen zu können. Code für "Close all to the right" funktioniert 100% –
Bitte werfen Sie einen Blick auf diesen Stapelüberlauf Artikel. http://stackoverflow.com/questions/7193294/intelligent-way-of-removing-items-from-a-listt-while-enumerating-in-c-sharp Sind Sie in der Lage, den genauen Fehler, den Sie erhalten, zu buchen ? –