0

我开始学习 Cocoa 和 Mono。

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

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

怎么了?

4

1 回答 1

1

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

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");
    }
}
于 2013-07-15T13:28:35.313 回答