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

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

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

Re[3]: 関数内での自オブジェクト名の取得方法


(過去ログ 56 を表示中)

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

■31926 / inTopicNo.1)  関数内での自オブジェクト名の取得方法
  
□投稿者/ きりんりき (1回)-(2009/01/30(Fri) 11:22:12)

分類:[VB.NET/VB2005 以降] 

初めて質問させていただきます。
VB.NETで以下の様な情報を取得する事はできるでしょうか。

Public Function TextBox1_Validating という関数の中で「TextBox1」という情報を取得する方法はあるでしょうか?
つまり、自分がどのオブジェクトに属する関数かわかる方法は有るのでしょうか?
リフレクション等、関連しそうな項目名で調べて見ても判りませんでした。

情報をお持ちの方がおられましたら、ご教示の程、よろしくお願い申し上げます。
引用返信 編集キー/
■31928 / inTopicNo.2)  Re[1]: 関数内での自オブジェクト名の取得方法
□投稿者/ επιστημη (1612回)-(2009/01/30(Fri) 11:30:52)
επιστημη さんの Web サイト
> Public Function TextBox1_Validating という関数の中で「TextBox1」という情報を取得する方法はあるでしょうか?
> つまり、自分がどのオブジェクトに属する関数かわかる方法は有るのでしょうか?

ん? ある関数がどのオブジェクトにアタッチされたハンドラであるかを知る、てことですか?
それは無理じゃないかしら。複数のイベントをひとつのハンドラにアタッチできます。
「Button1〜Button9まで、クリックしたらぜーんぶ ButtonX_Click に飛んでけ」なんてことができますから。

引用返信 編集キー/
■31935 / inTopicNo.3)  Re[1]: 関数内での自オブジェクト名の取得方法
□投稿者/ 渋木宏明(ひどり) (1040回)-(2009/01/30(Fri) 11:39:45)
渋木宏明(ひどり) さんの Web サイト
> Public Function TextBox1_Validating という関数の中で「TextBox1」という情報を取得する方法はあるでしょうか?

イベントハンドラの第一引数である sender が、そのイベントの発生元のオブジェクトの参照です。

必要なら object 型から TextBox 型にキャストしてください。

引用返信 編集キー/
■31937 / inTopicNo.4)  Re[2]: 関数内での自オブジェクト名の取得方法
□投稿者/ きりんりき (3回)-(2009/01/30(Fri) 11:44:02)
επιστημη 様
早速のご教示、ありがとうございました。

>>Public Function TextBox1_Validating という関数の中で「TextBox1」という情報を取得する方法はあるでしょうか?
>>つまり、自分がどのオブジェクトに属する関数かわかる方法は有るのでしょうか?
>
> ん? ある関数がどのオブジェクトにアタッチされたハンドラであるかを知る、てことですか?
 私の書き方が悪かったのですが、ある関数内で、自分の関数名を知りたいと思ったのです。
 これも、難しいでしょうか?

> それは無理じゃないかしら。複数のイベントをひとつのハンドラにアタッチできます。
> 「Button1〜Button9まで、クリックしたらぜーんぶ ButtonX_Click に飛んでけ」なんてことができますから。
 こんな事ができるのですか!

 殆ど、VB.NETでの開発は行った事が無いため、的外れな質問をしているかもしれませんが、何か解決への
ヒント等がありましたら(「絶対できない」と言う回答でも)よろしくお願いいたします。

引用返信 編集キー/
■31941 / inTopicNo.5)  Re[3]: 関数内での自オブジェクト名の取得方法
□投稿者/ επιστημη (1614回)-(2009/01/30(Fri) 11:50:25)
επιστημη さんの Web サイト
>  私の書き方が悪かったのですが、ある関数内で、自分の関数名を知りたいと思ったのです。

「今なんてゆー関数の中にいるか(ここはどこ?)」が知りたいんですか?

Console.WriteLine(ここはどこ); が
関数 foo 内に書かれていれば "foo",
関数 bar 内に書かれていれば "bar"
をプリントするとき、"ここはどこ"になんと書けばいいか、ですか?
# そんなもん、なんに使うですか?

引用返信 編集キー/
■31943 / inTopicNo.6)  Re[3]: 関数内での自オブジェクト名の取得方法
□投稿者/ よねKEN (257回)-(2009/01/30(Fri) 11:51:33)
>  私の書き方が悪かったのですが、ある関数内で、自分の関数名を知りたいと思ったのです。
>  これも、難しいでしょうか?

StackFrameクラスを調べてみると吉かもです。
#最初の質問文からはそういう質問だとは読み取れませんね(^^;

引用返信 編集キー/
■31946 / inTopicNo.7)  Re[2]: 関数内での自オブジェクト名の取得方法
□投稿者/ きりんりき (4回)-(2009/01/30(Fri) 11:55:04)
渋木宏明 様

επιστημη 様への再質問をしている間にお返事を頂き、お返事が遅れてしまいました。
>>Public Function TextBox1_Validating という関数の中で「TextBox1」という情報を取得する方法はあるでしょうか?
>
> イベントハンドラの第一引数である sender が、そのイベントの発生元のオブジェクトの参照です。
>
> 必要なら object 型から TextBox 型にキャストしてください。
 「object 型から TextBox 型にキャスト」というところが良く理解できませんでしたが、
sender.name.ToString() とすることで、自身の関数名を取得する事ができました。
 ありがとうございました。
引用返信 編集キー/
■31949 / inTopicNo.8)  Re[3]: 関数内での自オブジェクト名の取得方法
□投稿者/ επιστημη (1615回)-(2009/01/30(Fri) 12:00:03)
επιστημη さんの Web サイト
>>必要なら object 型から TextBox 型にキャストしてください。
>  「object 型から TextBox 型にキャスト」というところが良く理解できませんでしたが、
> sender.name.ToString() とすることで、自身の関数名を取得する事ができました。

うがー!! 「そのハンドラを誰が呼んだか」が知りたかったんかい!

解決済み
引用返信 編集キー/
■31952 / inTopicNo.9)  Re[4]: 関数内での自オブジェクト名の取得方法
□投稿者/ きりんりき (5回)-(2009/01/30(Fri) 12:08:31)
επιστημη 様
>> 私の書き方が悪かったのですが、ある関数内で、自分の関数名を知りたいと思ったのです。
>
> 「今なんてゆー関数の中にいるか(ここはどこ?)」が知りたいんですか?
>
> Console.WriteLine(ここはどこ); が
> 関数 foo 内に書かれていれば "foo",
> 関数 bar 内に書かれていれば "bar"
> をプリントするとき、"ここはどこ"になんと書けばいいか、ですか?
 そのような使い方です。

> # そんなもん、なんに使うですか?
 既に MessageBox を何箇所にも記述しているのですが、その際、表示させるメッセージが稚拙でデバッグ時に
どの箇所で表示させているのかが判りにくい為

 MessageBox(メッセージ,…) → MessageBox_2(sender.name.ToString(),メッセージ,…)

というように一括変換し、MessageBox_2内でメッセージを組み立てなおして表示しようと思ったためです。


引用返信 編集キー/
■31955 / inTopicNo.10)  Re[4]: 関数内での自オブジェクト名の取得方法
□投稿者/ きりんりき (6回)-(2009/01/30(Fri) 12:10:08)
よねKEN 様

>> 私の書き方が悪かったのですが、ある関数内で、自分の関数名を知りたいと思ったのです。
>> これも、難しいでしょうか?
>
> StackFrameクラスを調べてみると吉かもです。
 本クラスに関しても、調べてみようと思います。ありがとうございました。

> #最初の質問文からはそういう質問だとは読み取れませんね(^^;
 お騒がせして申し訳ございませんでした。
引用返信 編集キー/
■31956 / inTopicNo.11)  Re[4]: 関数内での自オブジェクト名の取得方法
□投稿者/ きりんりき (7回)-(2009/01/30(Fri) 12:11:49)
επιστημη 様

> >>必要なら object 型から TextBox 型にキャストしてください。
>> 「object 型から TextBox 型にキャスト」というところが良く理解できませんでしたが、
>>sender.name.ToString() とすることで、自身の関数名を取得する事ができました。
>
> うがー!! 「そのハンドラを誰が呼んだか」が知りたかったんかい!
 言葉知らずのため、お騒がせしてしまいました。
 申し訳ございませんでした。
引用返信 編集キー/
■31957 / inTopicNo.12)  Re[5]: 関数内での自オブジェクト名の取得方法
□投稿者/ .SHO (605回)-(2009/01/30(Fri) 12:18:49)
No31952 (きりんりき さん) に返信

>  MessageBox(メッセージ,…) → MessageBox_2(sender.name.ToString(),メッセージ,…)
> というように一括変換し、MessageBox_2内でメッセージを組み立てなおして表示しようと思ったためです。

それって、ハンドラ内でしか、うまくいかないと思うんですが…
解決済み
引用返信 編集キー/
■31963 / inTopicNo.13)  Re[6]: 関数内での自オブジェクト名の取得方法
□投稿者/ きりんりき (8回)-(2009/01/30(Fri) 13:09:26)
.SHO 様

>> MessageBox(メッセージ,…) → MessageBox_2(sender.name.ToString(),メッセージ,…)
>>というように一括変換し、MessageBox_2内でメッセージを組み立てなおして表示しようと思ったためです。
>
> それって、ハンドラ内でしか、うまくいかないと思うんですが…
 恥ずかしながら「ハンドラ内でしか、うまくいかない」という意味がよく理解できません。
 これは引数に sender を持つ、関数や SUB でしかうまくいかない、という事でしょうか?
 この件は自力で理解します。
 このような知識しか持ち合わせず、今後痛い目に何度もあうと思いますが、何とかやって行きます。
 この度は、つたない表現のため、多くの皆様に時間を割いていただくことになってしまい、申し訳ございませんでした。
 どうしても自力で解決できない事柄が発生しましたら、また、質問をさせて頂くと思いますが、その節は宜しくお願い申し上げます。
解決済み
引用返信 編集キー/
■31964 / inTopicNo.14)  Re[7]: 関数内での自オブジェクト名の取得方法
□投稿者/ επιστημη (1616回)-(2009/01/30(Fri) 13:12:00)
επιστημη さんの Web サイト
>  これは引数に sender を持つ、関数や SUB でしかうまくいかない、という事でしょうか?

です。senderが引数としてもらえなかったら sender.name.ToString() のやりようがない。

解決済み
引用返信 編集キー/
■31965 / inTopicNo.15)  Re[8]: 関数内での自オブジェクト名の取得方法
□投稿者/ .SHO (608回)-(2009/01/30(Fri) 13:17:25)
2009/01/30(Fri) 13:18:12 編集(投稿者)

■解決済みつけ忘れにて編集

> です。senderが引数としてもらえなかったら sender.name.ToString() のやりようがない。

ですね。

ってことで
>> Console.WriteLine(ここはどこ); が
>> 関数 foo 内に書かれていれば "foo",
>> 関数 bar 内に書かれていれば "bar"
>> をプリントするとき、"ここはどこ"になんと書けばいいか、ですか?
> そのような使い方です。

は、何も解決していないと思います。
まぁ、そんなことはできないんですけど。。。
解決済み
引用返信 編集キー/
■31968 / inTopicNo.16)  Re[5]: 関数内での自オブジェクト名の取得方法
□投稿者/ .SHO (609回)-(2009/01/30(Fri) 13:29:21)
それに、sender.name.ToString() では、ハンドラを呼出した関数名が出るわけで
Console.WriteLineをしているハンドラ名そのものが出力されているわけではないので
そもそも最初の目的から逸脱してます。

解決済み
引用返信 編集キー/
■31973 / inTopicNo.17)  Re[3]: 関数内での自オブジェクト名の取得方法
□投稿者/ 渋木宏明(ひどり) (1042回)-(2009/01/30(Fri) 14:24:27)
渋木宏明(ひどり) さんの Web サイト
> sender.name.ToString() とすることで、自身の関数名を取得する事ができました。

ほんとに? それで得られるのは関数名なんかじゃなくて、「イベントを発生したオブジェクトの IDE 上の名前」のはず。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -