getで、フォームのハンドルを取得する方法{設定されていますか?

StackOverflow https://stackoverflow.com/questions/765225

  •  12-09-2019
  •  | 
  •  

質問

私は(おそらくスレッド)別のクラスから自分のフォームのハンドルを取得したいのですが。 私はそれを私が起動しないやり方をしたい。

    public int GetHandle
    {
        get
        {
            if (this.InvokeRequired)
            {
                this.Invoke((MethodInvoker)delegate
                {
                    return this.Handle.ToInt32();
                });
            }
        }
    }

私はエラーを取得

「『System.Windows.Forms.MethodInvoker』戻り値のボイドので、returnキーワードは、オブジェクト式に続いてはいけません」 私は呼び出しを使用しない場合は、

、私は、現在のスレッドからメソッドを呼び出していないよ例外を取得ます。

役に立ちましたか?

解決

あなたは任意のデリゲートだけでなく、MethodInvokerを呼び出すことができます。これを試してください:

public int GetHandle
    {
        get
        {
            if (this.InvokeRequired)
            {
                return (int)this.Invoke((GetHandleDelegate)delegate
                {
                    return this.Handle.ToInt32();
                });
            }
            return this.Handle.ToInt32();
        }
    }
private delegate int GetHandleDelegate();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top