2009-04-27 26 views
0

vb.Net 3.0のスクリーンキャプチャクラスに渡すために、IntPtrとしてコントロールのハンドルを取得する必要があります。これを試みましたが、無効なハンドル例外が発生しました。VB.Net 3.0でコントロールのハンドルを取得するにはどうすればよいですか?

Dim hwnd As IntPtr = Runtime.InteropServices.GCHandle.Alloc(CanvasMap) 

ご協力いただければ幸いです。

ありがとうございました

答えて

0

VB.Netのバージョンはありません。代わりにVS2008に付属のVB.Netのバージョンを参照していますか?もしそうなら、それは実際にはVB.Netバージョン9.0です。彼らはVB6から切り替えるときにバージョン番号をリセットしていない、彼らはちょうど増分を続けた。

これはWinFormsプロジェクトですか?その場合は、CanvasMap.Handleを使用してコントロールにアクセスできます。このプロパティは実際に表示されるまで有効ではありませんが、ほとんどのシナリオでこれが当てはまります。

EDIT OPが、これは私はあなたがWPFアプリケーション内だけで任意のコントロールのためにこれを行うことができますかわからないWPFアプリケーション

で述べました。 WPF(link)のWindowInteropHelperを使用して、Windowインスタンスのハンドルを取得することは可能です。しかし、これは通常のコントロールインスタンスでは機能しません。

なぜハンドルが必要ですか?それはウィンドウを含むハンドルを持つことになりますか?

+0

CanvasMap.Handleを試してみるとこのエラーが発生します。 'handle'は 'System.Windows.Controls.Canvas'のメンバーではありません。 – user38349

+0

申し訳ありませんが、これはWPFアプリケーションです。 – user38349

+0

彼は.NET 3.0でVB.NETを意味すると思う。 –

0

ctrlSomeControl.Handle

関連する問題