在Gtk#TreeView小部件中捕获TAB

时间:2011-08-27 11:32:58

标签: c# mono gtk#

我创建了一个TreeView,实际上它可以被称为TableStringView:有各种单元格可以输入文本。

我想通过按TAB从一个单元格转到另一个单元格,而不是按ENTER键并单击另一个单元格,就像它是一个电子表格一样。

但是,当我向TreeView添加一个键监听器时,它会失败。 TAB自然用于在窗口小部件之间进行更改,因此在TreeView有机会执行任何操作之前捕获它。所以我正在寻找类似Windows成员AcceptsTab的东西:

tvTable.AcceptsTab = true;

或者可能是用于每列的Gtk.CellRendererText:

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

不幸的是,似乎没有像这样的成员存在。 为了在TreeView中捕获TAB,我该怎么做?

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用按键处理程序中的Glib.ConnectBefore属性?

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

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