2010-08-30 80 views
0

大家好我已經寫了一個代碼來重命名樹視圖的節點。在編輯時,如果我刪除所有文本並點擊輸入它正在重命名,但如果用戶輸入一些帶有擴展名.txt的文本,那麼只有我想重命名該名稱。Treeview問題,同時重命名節點

我調試我的解決方案刪除所有文字給人「」,以便它不檢查的條件,做什麼,如果它留給作爲引發錯誤消息我指定

這是我的代碼

//文本菜單

private void renameToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     string strOld = treeViewACH.SelectedNode.ToString(); 
     treeViewACH.SelectedNode.BeginEdit(); 

    } 

//爲了顯示所選擇的節點的上下文菜單

private void treeViewACH_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Right) 
     { 


      if (treeViewACH.SelectedNode.Parent != null) 
      { 
       string strSwitch = treeViewACH.SelectedNode.Parent.Text; 

       switch (strSwitch) 
       { 
        case "FileHeader": 
         //string strOld = treeViewACH.SelectedNode.Text.ToString(); 
         contextMenuStrip1.Show(treeViewACH, e.Location); 
         break; 
       } 
      } 
      else 
      { 
       // MessageBox.Show("Left clicked"); 
      } 
     } 
    } 

//要重命名

private void treeViewACH_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) 
    { 
     if (e.Label.IndexOfAny(new char[]{'\\', 
     '/', ':', '*', '?', '"', '<', '>', '|'}) != -1) 
     { 
      MessageBox.Show("Invalid tree node label.\n" + 
       "The tree node label must not contain " + 
        "following characters:\n \\/: * ? \" < > |", 
       "Label Edit Error", MessageBoxButtons.OK, 
       MessageBoxIcon.Error); 
      e.CancelEdit = true; 
      return; 


     } 
    } 
+0

您能否提供代碼...... – Muse 2010-08-30 10:06:40

回答

1

從我可以告訴你的問題,你試圖讓這個用戶可以只能將樹節點的文本更改爲以「.txt」結尾的字符串值。假設您正在嘗試執行的操作,您的AfterLabelEdit邏輯可以更改爲:

private void treeViewACH_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) 
{ 
    if (!e.Label.EndsWith(".txt")) 
    { 
     MessageBox.Show("Invalid tree node label.\n" + 
     "The tree node label must end with " + 
     "the extension: .txt", 
     "Label Edit Error", MessageBoxButtons.OK, 
     MessageBoxIcon.Error); 
     e.CancelEdit = true; 
     return; 
    } 
}