我开始学习Cocoa和Mono。
我创建了一个NSTableView,我已经填充了一些数据行。现在我想将一些方法连接到事件ColumnDidMove,ColumnDidResize和MouseDownInHeaderOfTableColumn。
但每当我为任何这些事件添加一个监听器时,我就无法再选择任何行或拖动任何列。但是,单击列标题可以对它们进行排序或调整大小。
怎么了?
答案 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");
}
}