C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: WithEventsと配列で実行時エラー459


(過去ログ 33 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■16369 / inTopicNo.1)  WithEventsと配列で実行時エラー459
  
□投稿者/ samurai (1回)-(2008/04/03(Thu) 20:04:29)

分類:[VB6 以前] 

はじめましてsamuraiです。(VSUGよろしく)
じゃんぬ様のサンプルにあるTextBoxに関する記事
 「フォーカスを取得した時にテキストを全選択状態にする」
 →http://jeanne.wankuma.com/tips/vb6/textbox/onfocusselectall.html
について VB6の部分を参考にさせてもらいましたが、
以下のコード実行時に、実行時エラー459が発生します。
---------------------------------------------
'/* ExtendsTextBox クラス モジュール */
' コンストラクタの代わり
Public Sub ExtendsTextBox(ByVal hTextBox As TextBox)
Set This = hTextBox 'error 459
End Sub
---------------------------------------------

他のコミュニティでも、同様な問題が発生しているようです。
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200409/200409_04090004.html

じゃんぬ様の環境では実行時エラー459は発生しないのでしょうか。
どうか、ご教授願います。

引用返信 編集キー/
■16371 / inTopicNo.2)  Re[1]: WithEventsと配列で実行時エラー459
□投稿者/ 魔界の仮面弁士 (685回)-(2008/04/03(Thu) 21:09:50)
No16369 (samurai さん) に返信
> 他のコミュニティでも、同様な問題が発生しているようです。
そこに、答えが書かれていますよね。


> 以下のコード実行時に、実行時エラー459が発生します。
その TextBox が、「コントロール配列」になっていない事を確認してください。
コントロール配列にした場合、WithEvents は利用できません。

コントロール配列にした場合は、イベントを管理しているのは、「Text1(0)」ではなく、
コントロール配列そのものである「Text1」となります。

Debug.Print TypeName(Text1(0))  '…… これは TextBox 型
Debug.Print TypeName(Text1)     '…… これは Object 型


個々のコントロールである「Text1(0)」は、確かに TextBox を継承していますが、
それ自体はイベントを持っていないため、TextBox 型の WithEvents 変数への代入は拒否され、
エラー459『オブジェクトまたはクラスがこのイベントセットをサポートしていません」となります。


なお、コントロール配列にしているのが、(TextBox等の)「標準コントロール」ではなく、
(RichTextBox等の)「ActiveX コントロール」であるならば、WithEvents 変数を
VBControlExtender 型にする事で、この問題を回避する事ができます。

引用返信 編集キー/
■16401 / inTopicNo.3)  Re[2]: WithEventsと配列で実行時エラー459
□投稿者/ samurai (2回)-(2008/04/04(Fri) 12:51:08)
No16371 (魔界の仮面弁士 さん) に返信

回答ありがとうございます。解決です。

原因はコントロール配列を渡していました。
他人の作った画面なので気づきませんでした。

> 個々のコントロールである「Text1(0)」は、確かに TextBox を継承していますが、
> それ自体はイベントを持っていないため、TextBox 型の WithEvents 変数への代入は拒否され、

→理解しました。

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -