J'ajoute une nouvelle case à mon frogramme et je dois enregistrer sa valeur dans le fichier de configuration. Je suis en train de le faire avec le code suivant:Ajouter un élément XML s'il n'existe pas
private void CloseDisconnectedCbx_CheckedChanged(object sender, EventArgs e)
{
XDocument doc = XDocument.Load(BotsFile);
var savedBots = doc.Descendants("SavedBots")
.Where(p => p.Element("BotName").Value.ToLower()
== SelectBotBox.SelectedItem.ToString().ToLower())
.Elements("CloseDisconnected").FirstOrDefault();
if (savedBots == null)
{
try
{
doc.Descendants("SavedBots")
.Where(p => p.Element("BotName").Value.ToLower()
== SelectBotBox.SelectedItem.ToString().ToLower())
.FirstOrDefault()
.Add(new XElement("CloseDisconnected",
Convert.ToInt32(CloseDisconnectedCbx.Checked)));
doc.Save(BotsFile);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
Il n'ajoute le nouvel élément, cependant, il ressemble à ceci:
<CloseDisconnected/> VALUE
Il ne finit jamais la fermeture de l'élément. Est-ce que mon code est faux, ou ai-je oublié quelque chose?
Ce code n'est supposé être déclenché que si l'élément est introuvable dans le fichier XML. Si c'est le cas, le changement sera effectué par un autre bouton.
montrent le code qui ajoute closedisconnected s'il vous plaît – HatSoft
vraiment difficile à lire ces Citations, je pense contribuerait à la lisibilité faible si elle a été divisée à plusieurs lignes (comme valeur de recherche extraite pour séparer variable, un élément à ajouter, etc.). – Giedrius
@HatSoft Le code pour ajouter CloseDisconnected se trouve dans la clause Try. – Rickard