2009-04-19 8 views
0

私は別のクラス(おそらくスレッド)から自分のフォームのハンドルを取得したいと思います。 私は「returnキーワードは、オブジェクト式に続いてはいけない、 『System.Windows.Forms.MethodInvoker』戻り値のボイドので、」私はエラーを取得し、それを私がget {set?}でフォームのハンドルを取得する方法

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

を呼び出すやり方をしたい

私が呼び出しを使用しない場合、私は現在のスレッドからメソッドを呼び出さないという例外が発生します。

答えて

1

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(); 
+0

ありがとう! Comment.Length = 10; –

関連する問題