CType(sender, PictureBox)とは?
投稿者 るしぇ  ()
投稿日時
2008/8/21 20:11:00
関数の意味はコードを選択状態にして[F1]キーを押せば
ヘルプが表示されて分かるはずでは?
ついでに MouseDown イベントも調べて、引数の
sender に何が格納されているか調べれば分かる話では?
…と思ったけど
[Control.MouseDown イベント]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.mousedown(VS.80).aspx
引数の説明書いてないね。
[イベントの利用]
http://msdn.microsoft.com/ja-jp/library/2ccyd347(VS.80).aspx
>sender パラメータおよびイベント引数パラメータは、イベント ハンドラに
>マウス イベントについての詳細情報を提供します。
>sender オブジェクトは、イベントの発生元を示します。
この辺か。。。
提示のコードでは MouseDown イベントを起こした PictureBox1
の参照アドレスが入っています。
ヘルプが表示されて分かるはずでは?
ついでに MouseDown イベントも調べて、引数の
sender に何が格納されているか調べれば分かる話では?
…と思ったけど
[Control.MouseDown イベント]
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.mousedown(VS.80).aspx
引数の説明書いてないね。
[イベントの利用]
http://msdn.microsoft.com/ja-jp/library/2ccyd347(VS.80).aspx
>sender パラメータおよびイベント引数パラメータは、イベント ハンドラに
>マウス イベントについての詳細情報を提供します。
>sender オブジェクトは、イベントの発生元を示します。
この辺か。。。
提示のコードでは MouseDown イベントを起こした PictureBox1
の参照アドレスが入っています。
投稿者 るきお  ()
投稿日時
2008/8/21 21:38:00
たけさんが提示されたコードがけ見ると、
Dim pb As PictureBox = CType(sender, PictureBox)
は無意味ですね。
変数pbをどこにも使っていないですよね。
それで、リンク先のサンプルプログラムを見てみました。
そのサンプルでpbとなっている部分はすべてPictureBox1と書いても動作します。
では、どうして
Dim pb As PictureBox = CType(sender, PictureBox)
と書いてあるのかは、ちょっと話が長くなるので焦点を絞りたいのですが、
①CTypeについて知りたいでしょうか?
②senderについて知りたいでしょうか?
③pbという変数を使う意義について知りたいでしょうか?
④=senderではなく=CType(sender, PictureBox)としていることの意味について知りたいでしょうか?
⑤それとも…?
ここでは簡単に書いておきます。
①→型変換を行っています。ここではObject型かたPictureBox型への変換です。
②→イベントを発生させたオブジェクトを表しています。ここではPictureBox1を意味することになります。
③→たとえば、型変換が必要は個所でいちいち変換していると効率が悪いので、最初に変換しておいたものを使いまわすなど。他にも意味はあります。
④→型を明示してプログラミング動作の安全性を高める趣旨です。必須ではありません。
Dim pb As PictureBox = CType(sender, PictureBox)
は無意味ですね。
変数pbをどこにも使っていないですよね。
それで、リンク先のサンプルプログラムを見てみました。
そのサンプルでpbとなっている部分はすべてPictureBox1と書いても動作します。
では、どうして
Dim pb As PictureBox = CType(sender, PictureBox)
と書いてあるのかは、ちょっと話が長くなるので焦点を絞りたいのですが、
①CTypeについて知りたいでしょうか?
②senderについて知りたいでしょうか?
③pbという変数を使う意義について知りたいでしょうか?
④=senderではなく=CType(sender, PictureBox)としていることの意味について知りたいでしょうか?
⑤それとも…?
ここでは簡単に書いておきます。
①→型変換を行っています。ここではObject型かたPictureBox型への変換です。
②→イベントを発生させたオブジェクトを表しています。ここではPictureBox1を意味することになります。
③→たとえば、型変換が必要は個所でいちいち変換していると効率が悪いので、最初に変換しておいたものを使いまわすなど。他にも意味はあります。
④→型を明示してプログラミング動作の安全性を高める趣旨です。必須ではありません。
投稿者 たけ  ()
投稿日時
2008/8/21 22:48:00
>>3
>①CTypeについて知りたいでしょうか?
>②senderについて知りたいでしょうか?
>③pbという変数を使う意義について知りたいでしょう
>か?
>④=senderではなく=CType(sender, PictureBox)としてい
>ることの意味について知りたいでしょうか?
>ここでは簡単に書いておきます。
>①→型変換を行っています。ここではObject型からPictur>eBox型への変換です。
PictureBox型というデータ型があったのですか。初めて知りました。
>②→イベントを発生させたオブジェクトを表しています。>ここではPictureBox1を意味することになります。
>③→たとえば、型変換が必要は個所でいちいち変換してい>ると効率が悪いので、最初に変換しておいたものを使いま>わすなど。他にも意味はあります。
>④→型を明示してプログラミング動作の安全性を高める趣>旨です。必須ではありません。
詳しい説明有り難うございます。
しかし、上記のことは、こちらのサイトにも入門書にも一切書かれてはいないことです。
MSDNにはもちろん書かれてあるのでしょう。
日々つまずきの連続で何か、VBの学習が遅々としてすすみません。やはりVBは奥が深いのですね。
>①CTypeについて知りたいでしょうか?
>②senderについて知りたいでしょうか?
>③pbという変数を使う意義について知りたいでしょう
>か?
>④=senderではなく=CType(sender, PictureBox)としてい
>ることの意味について知りたいでしょうか?
>ここでは簡単に書いておきます。
>①→型変換を行っています。ここではObject型からPictur>eBox型への変換です。
PictureBox型というデータ型があったのですか。初めて知りました。
>②→イベントを発生させたオブジェクトを表しています。>ここではPictureBox1を意味することになります。
>③→たとえば、型変換が必要は個所でいちいち変換してい>ると効率が悪いので、最初に変換しておいたものを使いま>わすなど。他にも意味はあります。
>④→型を明示してプログラミング動作の安全性を高める趣>旨です。必須ではありません。
詳しい説明有り難うございます。
しかし、上記のことは、こちらのサイトにも入門書にも一切書かれてはいないことです。
MSDNにはもちろん書かれてあるのでしょう。
日々つまずきの連続で何か、VBの学習が遅々としてすすみません。やはりVBは奥が深いのですね。
投稿者 るしぇ  ()
投稿日時
2008/8/22 01:36:00
>しかし、上記のことは、こちらのサイトにも入門書にも一切書かれてはいないことです。
もともとが DOBON さんとこの Tips で初心者レベルに合わせた内容じゃ
ないのだから当然では?
ただ、『一切』ってのは言い過ぎ。
①は関数そのものだから MSDN を見るべき内容です。ただし、型変換(キャスト)
に関してはエラーの良く出る場所ですし、色々な場面で出てきます。
[Visual Basic 中学校 > 初級講座 > 第12回 エラーと例外処理]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard12.htm
少しレベルの高くなってきたプログラムの解説には CType も使われてます。
[Visual Basic 中学校 > 初級講座 > 第29回 2つ目のフォーム]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard29.htm
>PictureBox型というデータ型があったのですか。初めて知りました。
これは全てのコントロールがクラスという知識があって、
[Visual Basic 中学校 > 初級講座 > 第9回 クラスの使い方]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard9.htm
[Visual Basic 中学校 > 初級講座 > 第4回 変数と型]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard4.htm
>変数pはPen型である
ということですよね?
②sender についてはイベントをフル活用できるようになって、引数に
便利な情報がまとめられてることを知ってからですから、中級者以上
の内容でしょう。
初心者は
>そのサンプルでpbとなっている部分はすべてPictureBox1と書いても動作します。
もともとが DOBON さんとこの Tips で初心者レベルに合わせた内容じゃ
ないのだから当然では?
ただ、『一切』ってのは言い過ぎ。
①は関数そのものだから MSDN を見るべき内容です。ただし、型変換(キャスト)
に関してはエラーの良く出る場所ですし、色々な場面で出てきます。
[Visual Basic 中学校 > 初級講座 > 第12回 エラーと例外処理]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard12.htm
少しレベルの高くなってきたプログラムの解説には CType も使われてます。
[Visual Basic 中学校 > 初級講座 > 第29回 2つ目のフォーム]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard29.htm
>PictureBox型というデータ型があったのですか。初めて知りました。
これは全てのコントロールがクラスという知識があって、
[Visual Basic 中学校 > 初級講座 > 第9回 クラスの使い方]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard9.htm
[Visual Basic 中学校 > 初級講座 > 第4回 変数と型]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard4.htm
>変数pはPen型である
ということですよね?
②sender についてはイベントをフル活用できるようになって、引数に
便利な情報がまとめられてることを知ってからですから、中級者以上
の内容でしょう。
初心者は
>そのサンプルでpbとなっている部分はすべてPictureBox1と書いても動作します。
投稿者 るしぇ  ()
投稿日時
2008/8/22 01:36:00
③これは常識。
a = 1 + 2
a = 1 + 2
a = 1 + 2
同じ計算を繰り返して意味あるの?ってだけのこと。CPU が実際に計算するのと
計算結果を参照するのでは、結果を参照するだけの方が必ず速いです。なぜなら
実際に計算するためには、計算に使う値をまず参照するからです。
計算結果を変数に覚えておくのは
[Visual Basic 中学校 > 初級講座 > 第4回 変数と型]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard4.htm
レベルの話。
1 + 2 が CType(sender, PictureBox) になったときに計算式に見えなくなるのは
初心者だからです。ただ、初心者のうちは全て
>そのサンプルでpbとなっている部分はすべてPictureBox1と書いても動作します。
でもいい話。無駄な処理だけど分かり易さ重視。上級者のコードとは違うのが
当然。
④[Visual Basic 中学校 > 初級講座 > 第36回 型の指定]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard36.htm
型が違えば動作が異なる。Option Strict On にすれば型変換は必須の
内容です。
a = 1 + 2
a = 1 + 2
a = 1 + 2
同じ計算を繰り返して意味あるの?ってだけのこと。CPU が実際に計算するのと
計算結果を参照するのでは、結果を参照するだけの方が必ず速いです。なぜなら
実際に計算するためには、計算に使う値をまず参照するからです。
計算結果を変数に覚えておくのは
[Visual Basic 中学校 > 初級講座 > 第4回 変数と型]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard4.htm
レベルの話。
1 + 2 が CType(sender, PictureBox) になったときに計算式に見えなくなるのは
初心者だからです。ただ、初心者のうちは全て
>そのサンプルでpbとなっている部分はすべてPictureBox1と書いても動作します。
でもいい話。無駄な処理だけど分かり易さ重視。上級者のコードとは違うのが
当然。
④[Visual Basic 中学校 > 初級講座 > 第36回 型の指定]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard36.htm
型が違えば動作が異なる。Option Strict On にすれば型変換は必須の
内容です。
投稿者 たけ  ()
投稿日時
2008/8/22 04:50:00
>>6
アドバイス有り難うございます。
私、自分で言うのも何ですが、かれこれVBを初めて11ヶ月になり、幾つかのプログラムも作れるようになって
おりますが、やはり初心者の域から抜け出せないというか
中級に達する能力に乏しいのかもしれません。
基礎から学んできたつもりですが、また一から出直したいと思います。
アドバイス有り難うございます。
私、自分で言うのも何ですが、かれこれVBを初めて11ヶ月になり、幾つかのプログラムも作れるようになって
おりますが、やはり初心者の域から抜け出せないというか
中級に達する能力に乏しいのかもしれません。
基礎から学んできたつもりですが、また一から出直したいと思います。
上記のサイトのサンプルで意味が理解できかねる部分が
ありますのでご教授願います。
'PictureBox1のMouseDownイベントハンドラ
Private Sub PictureBox1_MouseDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles PictureBox1.MouseDown
Dim pb As PictureBox = CType(sender, PictureBox)
'クリックされた位置を画像上の位置に変換
Dim imgPoint As New Point(CInt((e.X - imgRect.X) / ratio), _
CInt((e.Y - imgRect.Y) / ratio))
下記のコードは、どういう意味なのでしょうか?
Dim pb As PictureBox = CType(sender, PictureBox)