Ошибка отображения, если корневой узел древовидной структуры содержит дочерний узел - PullRequest
0 голосов
/ 15 сентября 2010

У меня изначально есть древовидная структура с корневым узлом при загрузке формы.Я добавлю дочерний узел как файл some.txt во время выполнения, выбрав опцию как Addnew из contextmenu, которая отображалась, когда пользователь щелкает правой кнопкой мыши по корневому узлу.Теперь, что мне нужно, это если в дереве есть дочерний узел, добавленный к корневому каталогу, и если пользователь пытается создать новый узел, щелкнув опцию addnew в контекстном меню, я хотел бы отобразить ошибку, поскольку разрешен только один дочерний узел.

Мой пример кода для добавления дочернего узла выглядит следующим образом

    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;
                        }
                }
            }
        //}

    }

1 Ответ

1 голос
/ 15 сентября 2010

Ни одному пользователю никогда не нравится, когда его бьют по окну сообщения, в котором говорится, что она сделала что-то глупое. Улучшите ваш пользовательский интерфейс, просто отключите пункт меню, если он не должен использоваться. Используйте событие открытия контекстного меню, например:

    private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) {
        addNewToolStripMenuItem.Enabled = tvwACH.Nodes.Count > 1;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...