c# - 监听NSTableView的事件防止选择和列拖动

标签 c# .net cocoa mono

我开始学习 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/

相关文章:

c# - 在 .net core 3.1 类库项目中的构建时设置具有某个值的类私有(private)字符串参数

c# - 跨多个 Active Directory 域搜索用户

c# - 跨本地数据库使用 INSERT INTO

javascript - 在 CocoaScript 中使用 Javascript 库

c# - IIS 中的 WCF 服务调用中找不到目录错误

.net - TFS 2015 构建模板无法构建 C#7 功能

c# - 如何从 PSD 文件获取 DPI

c# - 响应式(Reactive)扩展是否支持滚动缓冲区?

objective-c - isEqualToString 不返回 true

iphone - 是时候为 Apple 不可知论者学习 Objective-C/Cocoa