收听NSTableView事件会阻止选择和列拖动

时间:2013-07-14 15:42:53

标签: c# .net cocoa mono

我开始学习Cocoa和Mono。

我创建了一个NSTableView,我已经填充了一些数据行。现在我想将一些方法连接到事件ColumnDidMove,ColumnDidResize和MouseDownInHeaderOfTableColumn。

但每当我为任何这些事件添加一个监听器时,我就无法再选择任何行或拖动任何列。但是,单击列标题可以对它们进行排序或调整大小。

怎么了?

1 个答案:

答案 0 :(得分:1)

我不确定这里的确切方法是什么,但这可能会对你有帮助。

monomac绑定提供的事件作为生成的委托“在引擎盖下”实现。委托封装了您在NSTableView的情况下描述的许多功能,包括移动和调整列的大小。

这被描述为here(指单音,但概念相同)。

我认为,一旦您订阅了一个事件,会发生什么(这可能是错误的),委托内部设置为生成的实现,但不提供所有必需的功能。请参阅此relevant bug

您可以尝试订阅所有 NSTableView上公开的事件,看看是否有帮助。

否则,最好的方法可能是直接从您自己的代表处获取通知,而不是使用事件,例如:

public override void AwakeFromNib()
{
    tableView.Delegate = new MyDelegate();
}

private class MyDelegate : NSTableViewDelegate
{
    public override void ColumnDidMove(NSNotification notification)
    {
         Console.WriteLine("column did move");
    }
}