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

わんくま同盟

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

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


(過去ログ 112 を表示中)
■66233 / )  Re[9]: テキスト全選択
□投稿者/ ニチェ (5回)-(2013/04/10(Wed) 12:32:07)
No66228 (howling さん) に返信

> ただ、ここではControlと書くよりも、少なくともTextBoxBaseより上の継承クラスを書くべきだと思いました。
> Controlの継承クラスを使っても、別のところで(BeginInvokeですね、今回は)問題が出てしまうのは明らかだったからです。

もしかしたら、あなたは例示された

> BeginInvoke(New MethodInvoker(AddressOf DirectCast(sender, TextBox).SelectAll))

のBeginInvokeがTextBoxやTextBoxBaseのメソッドだと勘違いしていませんか?

私の回答は、上記のようにBeginInvoke(引数)と書いた場合は、Me.が省略されていること、つまり、Me.に該当する
コントロールのメソッドであるということを書いているに過ぎません。
(Me.がフォームなら、フォームのメソッドであるということになります。)

No.66209 の質問の本質に対する回答として、TextBoxやTextBoxBaseは直接関係ありませんので、
私はTextBoxやTextBoxBaseに言及する理由が全くないのです。

No.66209 の質問文には、

> 上記の内容を今度は、クラス内でやろうとしたら、BeginInvokeで「式はメソッドではありません」という
> エラーメッセージが出てきます。

とありますが、あなたは「式はメソッドではありません」というエラーが出て困っているという質問者に対して、
「式はメソッドではありません」に対するアドバイスをなにかされましたか?
もちろん、あなたが引数の内容について検証されたことについては素晴らしいことだと思いますが、
「式はメソッドではありません」がどういう状況で発生するのかという本質に着目しなかったことが、
あなたのミスリードの原因のようにも思います。

もし、あなたが例示コードのBeginInvokeがTextBoxやTextBoxBaseのメソッドだと勘違いしていなかったら、
あなたも「TextBoxBaseクラスについて書くべき」などという戯言を発言することもなかったでしょうし、
「よく読め」という私の暴言もなかったでしょう。
よく理解している人が「これはスルーしてもよい」と書くのは別にかまわないのですが、勘違いをしている人が
人のアドバイスに対して判断を決定するのはとても怖いことです。

私もこのスレッドに書き込みをしたくはないのですが、ここで私が書き込みを放棄すると、BeginInvokeの箇所で
「式はメソッドではありません」というエラーという質問の本質とこの解決方法が埋もれてしまいそうで、
このスレッドが何の役に立たないゴミスレッドになってしまうのは嫌なので、あえて書き込ませて頂きました。
返信 編集キー/


管理者用

- Child Tree -