-永鈴因幡亭-

日記なサイト    1H30M 0.382 
a rule

キャスト

2008年02月12日 15時02分05秒 | VB.NET
http://dobon.net/vb/bbs/log3-29/17355.html

環境/言語:[VB2003]
分類:[.NET]

MSのサンプルプログラム”Visual Basic .NET におけるコントロール配列の変更点”でstrictをONにした場合、ア部にて遅延バイディングにより、エラーが出ます。調べた結果、引数がObect変数であることがまずいようですが、具体的にどのように変更したら良いのか解りません。どなたか、お教え願えませんか?

Private Sub MixedControls_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, CheckBox1.Click
Select Case sender.TabIndex  ← ア
Case 0
MsgBox("Button 1")
Case 1
MsgBox("Button 2")
Case 2
MsgBox("CheckBox 1")
End Select
End Sub
題名: Re[1]: 遅延バインディングとstrict ONの問題
著者: YAS
日時: 2006/08/30 1:46:19
ID: 17356
この記事の返信元:
[17355] 遅延バインディングとstrict ONの問題 D500E 2006/08/30 1:21:18
この記事への返信:
(なし)
ツリーを表示
こんな感じでしょうか?

Dim TabIndex As Integer
If TypeOf sender Is Button Then
TabIndex = DirectCast(sender, Button).TabIndex
ElseIf TypeOf sender Is CheckBox Then
TabIndex = DirectCast(sender, CheckBox).TabIndex
End If
Select Case TabIndex
Case 0
MsgBox("Button 1")
Case 1
MsgBox("Button 2")
Case 2
MsgBox("CheckBox 1")
End Select

Strict Onなので適切な型にキャストしないとだめだと思います。
題名: Re[1]: 遅延バインディングとstrict ONの問題
著者: ガッ
日時: 2006/08/30 1:48:14
ID: 17357
この記事の返信元:
[17355] 遅延バインディングとstrict ONの問題 D500E 2006/08/30 1:21:18
この記事への返信:
[17359] Re[2]: 遅延バインディングとstrict ONの問題 じゃんぬねっと 2006/08/30 7:17:37
ツリーを表示
何も考えずにするならtypeofでインスタンス:eの元のクラスをチェックした後、
適切にctypeで型変換でいいのではないかと。
題名: Re[2]: 遅延バインディングとstrict ONの問題
著者: じゃんぬねっと
日時: 2006/08/30 7:17:37
ID: 17359
この記事の返信元:
[17357] Re[1]: 遅延バインディングとstrict ONの問題 ガッ 2006/08/30 1:48:14
この記事への返信:
(なし)
ツリーを表示
■No17357に返信(ガッさんの記事)
> 何も考えずにするならtypeofで

そうですね、TypeOf ~ Is ~ ですね。

> インスタンス:eの元のクラスをチェックした後、

sender 引数の箱の中身の型 (クラス) ですよね。

> 適切にctypeで型変換でいいのではないかと。

そうですね、CType および DirectCast でキャストすれば良いです。

そもそも、「遅延バインディング」 とは何か?
さえ知っていれば、何をどうすれば良いのかわかりそうですが...

アクセスしたいメンバの存在が保証された型を使用すれば良いわけです。

最新の画像もっと見る