2011-09-19 2 views
1

사용자가 treeNode를 편집 할 때 사용자 입력을 제어하려고합니다. 나는 그에게 숫자를 쓸 수 있기를 원하지 않는다. (또는 텍스트의 주어진 색인에 숫자를 쓰지 말고 보너스를주는 것이 더 좋다.)treeViewNode LabelEdit 입력 제어 문제가 발생했습니다.

내가했던 것은 mainWindow에서 사용자가 이 같은 TREENODE을 편집하거나되지 않습니다

void Tree_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) { 

     isEditing = false; 
} 



void Tree_BeforeLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e) { 
     isEditing = true; 
} 

private void Tree_KeyDown(object sender, KeyEventArgs e) { 

     control input. (e.Handled = true when keyDown is a number.) 

} 

이 내가 시도했지만 나는 TreeNode를 편집하고 있지 않다 때 이벤트를 keyDown 만이라고하는 것이다. 그래서 그것은 목적이 떨어집니다. (나는 이미 화살표 키 이벤트를 처리하기 위해 keydown을 사용하지만 두 가지를 모두 수행하려고합니다.)

키 누르기로 시도했지만 아무 쓸모가 없습니다.

답변

0

TreeView에는 LabelEdit 부분을 제어하는 ​​메커니즘이 없습니다. 숫자를 막기 위해 Label의 KeyDown 부분을 처리 할 수있는 경우에도 사용자가 필드에 숫자를 "붙여 넣을"수 있기 때문에 AfterLabelEdit에서 내용을 검사해야합니다. AfterLabelEdit 이벤트 중에 제어하는 ​​것이 가장 좋습니다.

private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) 
{ 
    foreach (char c in e.Label) 
    { 
    if (char.IsNumber(c)) 
     e.CancelEdit = true; 
    } 
} 
+0

답장을 보내 주셔서 감사합니다. "사용자가 필드에 숫자를 붙여 넣을 수 있다는 것은 무엇을 의미합니까?" – Joze

+0

@Joze 레이블 편집 상자가 표시되어있는 동안 마우스 오른쪽 버튼을 클릭하면 복사 - 잘라내 기 - 붙여 넣기 - 전체 컨텍스트 메뉴가 생성됩니다. – LarsTech

관련 문제