la collection a été modifiée opération d'énumération peut pas exécuter
D'accord, alors je veux ouvrir un nouveau formulaire si elle n'est pas déjà ouvert. J'ai donc vérifier la forme, basée sur le Titre ou le texte de la forme. Jusqu'à maintenant, il travaille, comme dans le formulaire s'ouvre et s'il est déjà ouvert, c'est juste qu'il apporte à l'avant. Mais mon problème étant que s'il n'est pas ouvert, et j'essaie de créer une nouvelle instance de lui, il me lance le "la Collection a été modifiée; opération d'Énumération peut pas exécuter". Et je ne peux pas pour la vie de me comprendre pourquoi. Toute aide est appréciée.
foreach (DataRow iRow in chatcheck.Rows)
{
FormCollection fc = Application.OpenForms;
foreach (Form f in fc)
{
if (f.Text != ChatReader["Sender"].ToString())
{
ChatBox chat = new ChatBox();
Connection.ConnectionStrings.chatopen = ChatReader["Sender"].ToString();
chat.Text = Connection.ConnectionStrings.chatopen;
chat.Show();
chat.BringToFront();
}
else if (f.Text == ChatReader["Sender"].ToString())
{
f.BringToFront();
}
}
}
OriginalL'auteur Dr Archer | 2013-09-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez enregistrer les informations dans une boucle foreach (par exemple dans une Liste<>), puis ouvrez le formulaire, à l'aide de cette information.
list.contains()
et si ce n'était pas une forme ouverte ou déjà dans la liste, puis il a été ajouté à la liste, et a ouvert plus tard dans Valery de Petrov solution. Merci beaucoup!OriginalL'auteur Valery Petrov
N'utilisez pas de
foreach
mais unfor
-boucle:Vous canot de changement de la collection sous-jacente d'un
foreach
au cours de l'énumération. Mais qu'advient-il si vous créez un nouveau formulaire et de le montrer. Vous ajoutez une autre forme de l'open-collection.foreach(Datarow row in sometable.rows)
c'est donc la création d'une magnifique boucle. Mais j'ai besoin que Datarow boucle pour obtenir l ' "Expéditeur" info. Donc je suis coincé à la manière de l'obtenir pour fonctionner.Vous n'êtes pas à l'aide de
iRow
à tous dans la boucle. Donc je ne sais pas ce que vous êtes en train d'essayer de réaliser. Peut-être que vous devrez vous poser une autre question en laissant laforeach
etOpenForms
question.Désolé il était censé être le jerame au lieu de ChatReader (j'ai oublié de l'éteindre, mais de toute façon il est toujours la création d'une boucle de près de 1200). Donc, c'est de me donner une assez grande boucle au lieu d'ouvrir la fenêtre unique.
Merci @TimSchmelter, qui effectivement résolu mon problème. J'ai essayé de supprimer un élément de la liste(de T) et j'ai eu un autre problème. Sortie Pour une fois retiré résolu tous les problèmes. Espérons que cela peut aider quelqu'un.
si vous souhaitez supprimer quelque chose d'utiliser un arrière
for
-boucle:for (int i = Application.OpenForms.Count-1; i >= 0; i--)...
Vous pouvez également utiliserList.ForEach
qui est en fait un wrapper pour un en arrièrefor
-boucle et permet de les modifier ou même supprimer l'élément.OriginalL'auteur Rango
Pourquoi ne pas utiliser un
foraeach
lorsqu'une boucle dans et la modification d'uneDictionary
??On peut faire une boucle par le biais d'un dictionnaire à l'aide de
foreach
avec ses touches comme ci-dessous:Voici un Post à ce sujet : Comment Itérer un Dictionnaire à l'Aide des Touches En C#
OriginalL'auteur open and free
Véritable code de la vie est à l'intérieur de la
MainForm
deWinForms
app.OriginalL'auteur Developer