Option Strict On では、遅延バインディングを使用できません。

タグの編集
投稿者 イカロス  (社会人) 投稿日時 2009/12/22 10:17:51
初級講座 >第10回 イベントプロシージャ
1.イベントプロシージャの基本
■リスト1:Clickイベントプロシージャ
のところで
>第1引数はイベントを発生させたクラスが渡されてきます。
>リスト1のClickイベントプロシージャの場合第1引数のsenderにはButton1がセットされています。
>そのため、イベントプロシージャ内で sender.Text = "Hello!" などと書くと、 
>Button1.Text = "Hello!" と同じ意味になります。
とありますが、sender.Text部分に波下線が入り、表題のエラーメッセージ
「Option Strict On では、遅延バインディングを使用できません。」
が出されてしまいます。

試しに設定でOption Strict Offにしても直りません。
基本的にOn設定でプログラムは作りたいのですが、エラーにならない方法はありますか?
投稿者 太郎冠者  (社会人) 投稿日時 2009/12/22 10:32:37
DirectCast(sender, Button).Text = "Hello!"

とか。
投稿者 wii  (中学生) 投稿日時 2009/12/23 02:41:46
イベントプロシージャのsenderはByvalで宣言されているので、senderをいじってもコントロールの中身は変わりません。
なので、
Button1.Text="Hello!!"


でしか(?)できません。。
投稿者 るしぇ  (社会人) 投稿日時 2009/12/23 03:10:43
>イベントプロシージャのsenderはByvalで宣言されているので、senderをいじってもコントロールの中身は変わりません。
コントロールは参照型のオブジェクトなので、sender を利用した Text プロパティの変更は
反映されますよ?
[Visual Basic 中学校 > 初級講座 > 第34回 値型と参照型]
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm
>■リスト11
あたりに解説されています。
投稿者 (削除されました)  () 投稿日時 2009/12/23 04:02:35
(削除されました)
投稿者 wii  (中学生) 投稿日時 2009/12/23 05:16:34
失礼しましたm(_ _)m
投稿者 (削除されました)  () 投稿日時 2009/12/23 06:38:26
(削除されました)
投稿者 るしぇ  (社会人) 投稿日時 2009/12/24 19:41:18
>失礼しましたm(_ _)m
いえいえ、勉強しているからの間違いですね。
良い間違い方だと思います。

間違った書き込みをしてもちゃんとツッコミ
入りますので、安心して間違ってください。
投稿者 イカロス  (社会人) 投稿日時 2009/12/26 17:23:55
ツールオプションでOffにしても(Off設定が)なぜか有効にならなかったのですが
コードの頭に、Option Strict Onを明示することで同様の処理が出来ました。
投稿者 るきお  (社会人) 投稿日時 2009/12/27 01:42:14
無能め。
いちいち質問するな。
おまえはムダ。無駄ムダ。
投稿者 るしぇ  (社会人) 投稿日時 2009/12/27 03:18:28
>ツールオプションでOffにしても(Off設定が)なぜか有効にならなかったのですが
>コードの頭に、Option Strict Onを明示することで同様の処理が出来ました。 
うーん。。On と Off の説明が矛盾してる?何が有効になると思っているんでしょ?
想定している Off設定の内容に勘違いがあるのでは?と感じる説明です。

というか DirectCast で型変換を明示的に示すコードは Option Strict は
Off でも On でも処理できるからね。
遅延バインディングか事前バインディングか、それをコンパイルエラーとして
出力するか?という違いなので、まずはコードありきの話です。

>ツールオプション
これは、もしかしたら新規プロジェクトを作成した時の、デフォルト設定の
設定画面を言っているのかな。
だとしたら、設定場所が違いますね。プロジェクト全体の Option Strict の
設定は、プロジェクトの[プロパティ]画面にあります。ツールオプションの方は
このデフォルト値をプロジェクト新規作成時に適用する為のものです。
投稿者 イカロス  (社会人) 投稿日時 2010/1/3 10:03:49
るしぇ様、回答を有り難うございます。
>>ツールオプション
>これは、もしかしたら新規プロジェクトを作成した時の、デフォルト設定の
>設定画面を言っているのかな。
メニューバー>ツールオプション>プロジェクトおよびソリューション>Visual Basicの既定値
既定のプロジェクト設定>Option Strict On/Off
の設定箇所です。

>だとしたら、設定場所が違いますね。プロジェクト全体の Option Strict の
>設定は、プロジェクトの[プロパティ]画面にあります。ツールオプションの方は
>このデフォルト値をプロジェクト新規作成時に適用する為のものです。
ツールオプションの設定は、プロジェクトの新規作成時に初期設定されるのであって、後から
この設定を変えても既存のプロジェクトに反映されない。
既存のプロジェクトの設定を変えるには、プロジェクトの[プロパティ]画面で変更する。
ということですね。

完全独学で周りに相談できる人が皆無なので、テキスト通りにいかないとき検索しただけでは
解決しないというか、すっきりしない部分がときどきあります。
レベルの低い質問で恐縮ですがまたアドバイスをお願いします。
投稿者 アルトテナー31  (社会人) 投稿日時 2010/1/4 03:13:34
>>無能め。
>>いちいち質問するな。
>>おまえはムダ。無駄ムダ。
本物の「るきお」だったら落ち着いて。
偽者の「るきお」だったら消え失せろ。
投稿者 プルプル  (社会人) 投稿日時 2010/1/4 20:16:46
2年もVBをやっていて基礎ができない理由はなんですかね?
不思議ですよ。
なぜ基礎ができないんですか?
VBは難しいですかね?

あけおめ。^^;
投稿者 グライア・ヴェルズ  (中学生) 投稿日時 2010/1/5 03:18:42
>>2年もVBをやっていて基礎ができない理由はなんですかね?
僕はもうすぐVBはじめて1年ですが、基礎はボロクソですよw
私立の受験を間近に控えてるけど楽しいからやってます。
>>あけおめ。^^;
あけおめ。ことよろw
投稿者 パルプンテ  (社会人) 投稿日時 2010/1/5 03:29:43
ふう~ん。
テストとかあるんだね。
経験豊富なボクチンがアドバイスしとくよ。
数学は基礎はキチントやりなさいよ。本物の中学生ならの話だが。
やらないと高校で数学が0点とか、低い点数しか取れんぞ。

基礎は重要なんだよ。
投稿者 グライア・ヴェルズ  (中学生) 投稿日時 2010/1/5 03:37:31
>>数学は基礎はキチントやりなさいよ。本物の中学生ならの話だが。
本物です。数学苦手ですw
>>基礎は重要なんだよ。 
同感です。数学もVBも基礎が分からないと総崩れw
まぁありがとうございます。
投稿者 ベホマスライム  (社会人) 投稿日時 2010/1/5 04:10:59
はらね。まぁありがとう。の部分でダイタイわかる。
重要視してないよね。
こんな質問を某掲示板サイトで見ました。
「敵キャラとミサイルの当たり判定プログラムを作りたい。」
簡単ですよね?
でも、この人物が基礎である論理演算が理解できない場合は苦労しますよ。
論理演算は中学の数学の範囲ですよね?
A And B
A Or B
A Xor B

基礎ってけっこう範囲が広いからねぇ。
一応、きみにベホマをかけてあげますね..>>_<<☆
投稿者 (削除されました)  () 投稿日時 2010/1/5 05:10:10
(削除されました)
投稿者 グライア・ヴェルズ  (中学生) 投稿日時 2010/1/5 05:13:42
投稿者 グライア・ヴェルズ   (中学生)   投稿日時 2010/01/04 20:10:10
>>はらね。まぁありがとう。の部分でダイタイわかる。
>>重要視してないよね。
誤解受ける返答すみません。
論理演算は中学校範囲ではありません。哀れなゆとり教育世代なのでorz
Andは前者後者ともに真の場合をもとめ、
Orがどちらかでも真の場合をもとめ、
Xorが片方だけ真の場合をもとめる、でしたっけ。
自信ありませんね・・・
思えばXorってあまり使ったこと無いような・・・
と、それも未熟者の印なんですよね。
投稿者 ベホマスライム  (社会人) 投稿日時 2010/1/5 06:17:54
論理演算。絵で見ると、理解しやすいですね。
よく使いますし、必須重要基礎項目です。
ゲーム制作以外でも必ず使う日があるでしょう。

ps、中学数学だと思いますよ。
投稿者 グライア・ヴェルズ  (中学生) 投稿日時 2010/1/5 18:08:56
>>ゲーム制作以外でも必ず使う日があるでしょう。
キモに銘じておきます。
>>ps、中学数学だと思いますよ。 
いや、本当に教科書に無かったです。そちらの地域、世代では中学でした?
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2010/1/5 20:52:19
>> 論理演算。絵で見ると、理解しやすいですね。
>> ps、中学数学だと思いますよ。 

小中学生で知っている人も居れば、大人でも知らない人は珍しくないかと。

> いや、本当に教科書に無かったです。そちらの地域、世代では中学でした? 

パルプンテさんやベホマスライムさんの所は分かりませんが、論理演算(And/Or/Exclusive-Or等)を
授業で学ぶとすれば、高校の科目である「情報B」あたりだと思います。

ただし、情報A/情報Cしか開講していない高校や、「情報科」の無い2003年以前に
高校を卒業している世代の場合、そもそも学校教育で教わっていない事も珍しくありません

また、学校や教員の方針の違いにより、ある程度の差異はありえるかと思います。
(私の出身校では、中学校の「技術・家庭科」の時間に、And/Or/Not 等を教わりました)

# さらに言えば、私は自宅と小学校の両方にPCがあった事もあり、論理演算の概念程度の話であれば
# 小学校低学年の頃に、学級担任の先生と父親の両方から、ある程度教わっていました。(^^;
投稿者 るしぇ  (社会人) 投稿日時 2010/1/6 00:17:58
Option Strict On の設定に論理演算の話題が必要ですか?

質問者とも、質問内容とも関係ない雑談は別スレッドで
お願いいたします。
投稿者 Lv1白魔導師  (社会人) 投稿日時 2010/1/6 08:38:14
かなり。。関係ありますよ。
質問者はByvalキーワードとか値渡しとか理解していない。
で、で、で!!
なんで、senderをいじるんですかね?
質問者はソコをいじれるレベルではない。
やるべきトコはByValキーワードとか値渡しのトコ!

そうでしょ?
基礎基礎。

って言うか、引数も、まだやれるレベルかどうかもアレな感じがしますね。
VBでの目標とか知りタイですぅね。
「着眼大局、着手小局」
とかさ。格言もあるし^_^☆

投稿者   (その他) 投稿日時 2010/1/6 17:59:40
少なくとも、質問者が居ないのにあれこれ推測・憶測をまじえた自分勝手な妄想書き込みをする必要は無い。

こういう輩が基礎だの常識だの普通だのという言葉を一番多く使いながら、コミュニケーションを円滑に進めるための基本をまったく理解していない上に、使った言葉を一番蔑ろにしている現状がとても面白い。

投稿者 るしぇ  (社会人) 投稿日時 2010/1/6 23:22:38
一目見て役に立たないと分かる、曖昧にごまかした単語を並べた
だけの書込みは問題としてません。もともと意味なんて無いんだし、
理解できないはずの内容を理解する相方が現れて自作自演しようが、
妄想しようが、近い将来、管理人さんに全削除されて消えるので
同じ結果です。
投稿者 (削除されました)  () 投稿日時 2010/1/7 03:12:45
(削除されました)
投稿者 (削除されました)  () 投稿日時 2010/1/7 06:44:22
(削除されました)
投稿者 (削除されました)  () 投稿日時 2010/1/27 04:58:41
(削除されました)