2

私は DirectX を学んでいますが、C++ はよくわからないので、代わりに SharpDX を使用することにしました。しかし、私は C++ のこの部分で立ち往生しています。彼らは TypedEventHandler の関数のアドレスを使用していますが、C# でそれを記述する方法がわかりません。誰でも助けることができますか?

ref class App sealed : public IFrameworkView
{
public:
virtual void Initialize(CoreApplicationView^ AppView)
{
    AppView->Activated += ref new TypedEventHandler
        <CoreApplicationView^, IActivatedEventArgs^>(this, &App::OnActivated);
}
virtual void SetWindow(CoreWindow^ Window) {}
virtual void Load(String^ EntryPoint) {}
virtual void Run() {}
virtual void Uninitialize() {}

void OnActivated(CoreApplicationView^ CoreAppView, IActivatedEventArgs^ Args)
{
    CoreWindow^ Window = CoreWindow::GetForCurrentThread();
    Window->Activate();
}
};

これまでの私の変換

internal class App : IFrameworkView
{
    public void Initialize(CoreApplicationView AppView)
    {
        // Call OnActivated() when the Activated event is triggered
        AppView.Activated += new TypedEventHandler<CoreApplicationView, IActivatedEventArgs>(this,this.OnActivated);

    }
    public void SetWindow(CoreWindow Window) {}
    public void Load(String EntryPoint) {}
    public void Run() {}
    public void Uninitialize() {}

    public void OnActivated(CoreApplicationView CoreAppView, IActivatedEventArgs Args)
    {
        CoreWindow Window = CoreWindow.GetForCurrentThread();
        Window.Activate();
    }

}
4

1 に答える 1

6

C# イベント ワイヤアップに「this」引数は必要ありません。

public sealed class App : IFrameworkView
{
    public virtual void Initialize(CoreApplicationView AppView)
    {
        AppView.Activated += new TypedEventHandler <CoreApplicationView, IActivatedEventArgs>(OnActivated);
    }

    public virtual void SetWindow(CoreWindow Window)
    {
    }
    public virtual void Load(string EntryPoint)
    {
    }
    public virtual void Run()
    {
    }
    public virtual void Uninitialize()
    {
    }

    public void OnActivated(CoreApplicationView CoreAppView, IActivatedEventArgs Args)
    {
        CoreWindow Window = CoreWindow.GetForCurrentThread();
        Window.Activate();
    }
}
于 2013-06-27T02:05:08.167 に答える