2011-08-27 4 views
1

실제로 TreeView를 호출 할 수있는 TreeView를 만들었습니다. 텍스트를 입력 할 수있는 다양한 셀이 있습니다.Gtk # TreeView widget에서 TAB 캡처하기

Enter를 누르고 스프레드 시트 인 것처럼 다른 셀을 클릭하는 대신 Tab 키를 눌러 한 셀에서 다른 셀로 이동하려고합니다.

그러나 TreeView에 키 수신기를 추가하면 실패합니다. TAB은 자연스럽게 위젯 사이에서 변경하는 데 사용되므로 TreeView가 아무 것도 할 수있는 기회가 있기 전에 캡쳐됩니다.

tvTable.AcceptsTab = true; 

을 아니면 각 열에 대해 사용되는 Gtk.CellRendererText는 : 그래서 윈도우 멤버 AcceptsTab를 닮은 무언가를 찾고

var cell = new Gtk.CellRendererText(); 
cell.AcceptsTab = true; 
//... 
column.PackStart(cell, true); 
tvTable.AppendColumn(column); 

불행하게도, 이런 어떤 구성원이 존재 나타나지 않습니다. TreeView에서 TAB을 캡처하려면 어떻게해야합니까?

답변

3

keypress 핸들러에서 Glib.ConnectBefore 속성을 사용해 보셨습니까?

/* ... */ 
cell.KeyPressEvent += onCellKeyPress; 

[GLib.ConnectBefore] 
void onCellKeyPress(object sender, EventArgs e) 
{ 
/* ... */ 
} 
+0

네, 완벽하게 작동했습니다. 고맙습니다! – Baltasarq

+0

onCellKeyPress 메서드를 스프레드 시트처럼 작동시키기 위해 실제로 넣은 것을 말할 수 있습니까? 감사! –