我开始学习 Cocoa 和 Mono。
我创建了一个 NSTableView,其中填充了一些数据行。现在我想将一些方法连接到事件 ColumnDidMove、ColumnDidResize 和 MouseDownInHeaderOfTableColumn。
但是,每当我为这些事件中的任何一个添加侦听器时,我都无法再选择任何行或拖动任何列。但是,单击列标题对它们进行排序或调整大小是可行的。
怎么了?
我不确定这里确切的正确方法是什么,但这可能会对您有所帮助。
monomac 绑定提供的事件作为生成的委托在“幕后”实现。委托封装了您在 案例中描述的许多功能NSTableView
,包括移动和调整列大小。
这在此处进行了描述(指的是单点触控,但概念是相同的)。
我认为,一旦您订阅了一个事件,会发生什么(这可能是错误的),委托在内部被设置为一个不提供所有必需功能的生成实现。请参阅此相关错误。
您可以尝试订阅所有公开的事件,NSTableView
看看是否有帮助。
否则,最好的方法可能是直接从您自己的委托中获取通知,而不是使用事件,例如:
public override void AwakeFromNib()
{
tableView.Delegate = new MyDelegate();
}
private class MyDelegate : NSTableViewDelegate
{
public override void ColumnDidMove(NSNotification notification)
{
Console.WriteLine("column did move");
}
}