내가 코코아의alertDidEnd : Objective-C의 void *에 해당하는 모노는 무엇입니까?
- (void) alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo;
문제를 기반으로하는 방법을 구현하기 위해 시도하고 * void 형의 매개 변수입니다. C#에 상응하는 포인터가 void인지 알 수 없습니다.
"void *"로 안전하지 않은 실행을 시도했지만 분명히 같지 않습니다. 또한 간단하게 "void"를 시도했지만 C# 컴파일러는 void를 매개 변수 유형으로 사용할 수 없다고 주장합니다.
아이디어가 있으십니까?
Error CS0123: A method or delegate `MyProgram.MainWindow.alertDidEnd(MonoMac.AppKit.NSAlert, int, MonoMac.Foundation.NSObject)' parameters do not match delegate `MonoMac.Foundation.NSAction()' parameters (CS0123)
업데이트 (문제가 해결 된 후) :이 호출이 작업을 만든 방법입니다
:
alert.BeginSheet ((NSWindow)sender, this, new Selector ("alertDidEnd:returnCode:contextInfo:"), IntPtr.Zero);
[Export("alertDidEnd:returnCode:contextInfo:")]
public void alertDidEnd (NSAlert alert, int result, IntPtr ci)
{}
첫 번째 창에 부착 된 경고를 표시를의 두 번째는 경고가 해제 될 때 호출되는 함수의 메서드 선언입니다. 결과는 int 결과에 저장됩니다.
[Export("alertDidEnd:returnCode:contextInfo:")]
public void alertDidEnd (NSAlert alert, int returnCode, NSObject contextInfo)
{
Console.WriteLine (returnCode);
}
void *
포인터가 NSObject의에 랩됩니다
Ta, 나는 그것을 시험해 보겠다. (매개 변수없는 방법을 사용했다면 어떤 버튼이 메시지 상자에 눌려 졌는지 알 수 없습니다.) –
실제로 NSAlert를 사용하지 않는 것처럼 보이므로 실제로 시도한 내용을 게시하면 도움이 될 수 있습니다. 예. myAlert.RunModal()의 반환 값을 확인하면 반환 코드도 제공됩니다. – Curtis
나는 RunModal()이 beginSheetModalForWindow()의 대안이라고 생각했다. 나는 둘 다 부른다고 생각하지 않았다. –