Ma c OS, VS Community, C#, приложение Cocoa.
Следующий код генерирует ошибку времени выполнения.
using AppKit;
using CoreGraphics;
using Foundation;
using System;
namespace NSTextFieldValidation
{
public partial class ViewController : NSViewController
{
public ViewController(IntPtr handle) : base(handle) { }
public override void ViewDidLoad()
{
base.ViewDidLoad();
var fm = new NSNumberFormatter { Maximum = 999, Minimum = 0 };
NSTextField Tbx1 = new NSTextField(new CGRect(10, 50, 100, 30));
View.AddSubview(Tbx1);
Tbx1.Formatter = fm;
Tbx1.Delegate = new MyTextFieldDelegate();
Tbx1.DidFailToValidatePartialString += TbxDidFailToValidatePartialString;
}
private void TbxDidFailToValidatePartialString(object sender, NSControlTextErrorEventArgs e)
{
Console.WriteLine("DidFailToValidatePartialString activated");
}
}
public class MyTextFieldDelegate : NSTextFieldDelegate
{
override public void EditingEnded(NSNotification notification)
{
Console.WriteLine("EditingEnded");
}
}
}
Вот исключение:
System.InvalidOperationException
Регистрация события перезаписывает существующий делегат. Либо просто используйте события, либо свой собственный делегат: NSTextFieldValidation.MyTextFieldDelegate AppKit.NSTextField + _NSTextFieldDelegate
Я понимаю, что неправильно использовать событие и делегат одновременно. Я только спрашиваю, какой метод мне нужно переопределить в моем делегате для работы с «DidFailToValidatePartialString», потому что я его не нашел (возможно, я выглядел не очень хорошо).