2010-09-15 86 views
0

我在加載表單時最初使用根節點樹形視圖。我將在運行時將子節點添加爲some.txt文件,方法是從用戶右鍵單擊根節點時顯示的contextmenu中選擇一個選項作爲Addnew。現在我需要的是如果樹的子節點追加到根,並且如果用戶試圖通過點擊上下文菜單中的選項addnew來創建一個新節點,我想顯示一個錯誤,因爲只有一個孩子允許。如果treeview根節點包含子節點,則顯示錯誤

我的示例代碼添加一個子節點如下:

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

    } 
+0

您將重構該代碼,對嗎? – flq 2010-09-15 16:27:50

回答

1

沒有用戶曾經喜歡得到一個消息框,告訴她,她做了一件愚蠢的耳光。改善您的用戶界面,只需禁用不應該使用的菜單項即可。使用上下文菜單的打開事件,如下所示:

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) { 
     addNewToolStripMenuItem.Enabled = tvwACH.Nodes.Count > 1; 
    } 
+0

但即使根節點不包含子節點,它也不會顯示上下文菜單。 – Dotnet 2010-09-16 07:43:45

+0

呃,什麼?我無法理解你的評論。 – 2010-09-16 12:08:57

+0

對於您給出的代碼,不允許我顯示上下文菜單,即使根目錄不是孩子。我要求的是如果樹根已經有一個子節點,並且如果我右鍵單擊根,並且如果我嘗試添加新節點,它應該被禁用 – Dotnet 2010-09-18 04:02:15

相關問題