如何检查 NSTextField 是否在 C# 中更改了值?

How can I check if NSTextField did change value in C#?

我在 C# 中创建了一个 Cocoa 应用程序(使用 Xamarin.Mac),我想检查 NSTextField 是否更改了值。我在 C# 中找不到很多关于此的教程,并且为 swift 或覆盖找到的方法对我不起作用。我试过了:

 public override void ObjectDidEndEditing(NSObject editor)

 public override void DidChangeValue(string forKey)

在 MacOS 中使用 Xamarin 时,要知道 NSTextField 何时更改,您可以订阅它的 Changed 事件。

myTextField.Changed += TextField_Changed;

private void TextField_Changed(object sender, EventArgs e)
{
    //Here you can access your TextField to get the value.
}

希望对您有所帮助。

有两种方法可以检查 NSTextField 是否更改了值。

  • One 使用 delegate 与 MacOS 原生方法相同,但与 navite 代码略有不同。

如下:

textField.Delegate = new MyNSTextDelegate();

创建一个 class 继承自 NSTextFieldDelegate :

class MyNSTextDelegate : NSTextFieldDelegate 
{
   [Export("controlTextDidChange:")]
   public void Changed(NSNotification notification)
   {
       NSTextField textField = notification.Object as NSTextField;
       Console.WriteLine("Text Changed : " + textField.StringValue);
   }
}
  • 另一个 正在使用来自 C# 方法的 Event

如下:

textField.Changed += TextValue_Changed;

textField.Changed += new EventHandler(TextValue_Changed);

TextValue_Changed的实现:

private void TextValue_Changed(object sender, EventArgs e)
{
    NSNotification notification = sender as NSNotification;
    NSTextField textField = notification.Object as NSTextField;
    Console.WriteLine("Text Changed : " + textField.StringValue);
}