Захват TAB в виджете Gtk # TreeView - PullRequest
1 голос
/ 27 августа 2011

Я создал 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?

1 Ответ

3 голосов
/ 27 августа 2011

Вы пытались использовать атрибут Glib.ConnectBefore в обработчике нажатия клавиш?

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

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