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