J'ai une vue arborescente initialement avec un nœud racine lorsque le formulaire est chargé. Je vais ajouter le noeud enfant comme fichier some.txt au moment de l'exécution en sélectionnant une option comme Addnew du menu contextuel qui s'affichait lorsque l'utilisateur cliquait sur le noeud racine. Maintenant, ce dont j'ai besoin est si l'arbre a un nœud enfant ajouté à la racine et si l'utilisateur essaie de créer un nouveau nœud en cliquant sur l'option addnew du menu contextuel je voudrais afficher une erreur comme un seul enfant autorisé.Erreur d'affichage si un nœud racine treeview contient un nœud enfant
Mon exemple de code pour ajouter un nœud enfant se présente comme suit
private void AddNew_Click(object sender, EventArgs e)
{
//if (tvwACH.Nodes.Count==1)
//{
// MessageBox.Show("Only One File allowed");
//}
//else
//{
if (tvwACH.SelectedNode.Text != null)
{
string strSelectedNode = tvwACH.SelectedNode.Text.ToString();
switch (strSelectedNode)
{
case "ACH":
{
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = @"C:\";
saveFileDialog1.DefaultExt = "txt";
saveFileDialog1.Filter = "(*.txt)|*.txt";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.ValidateNames = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
FileName = saveFileDialog1.FileName;
if (FileName.Contains(" \\/:*?<>|"))
{
MessageBox.Show("File name should not contain \\/:*?<>|", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if ((myStream = saveFileDialog1.OpenFile()) != null)
{
FileName = saveFileDialog1.FileName;
TreeNode newNode = new TreeNode(FileName);
newNode.SelectedImageIndex = 1;
tvwACH.SelectedNode.Nodes.Add(newNode);
TreeNode NodeFileHeader = newNode.Nodes.Add("FileHeader");
myStream.Close();
}
}
}
break;
}
case "FileHeader":
{
sr = new StreamReader(FileName);
strLen = sr.ReadLine();
if (strLen == null)
{
sr.Close();
Form frmFileHeader = new frmFileHeader(this);
frmFileHeader.ShowDialog(this);
}
else
{
MessageBox.Show("Only One File Header is allowed for a file", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
break;
}
case "BatchHeader":
{
Form frmBatch = new frmBatch(this);
frmBatch.ShowDialog();
break;
}
}
}
//}
}
Vous allez refactoriser ce code, n'est-ce pas? – flq