VB2005を使用しています。 「Senderの値の取得方法」について教えてください。タブを選択した時に、どのタブが選択されたかを知りたいのですがTabControl1_selectedイベントですと、e.TabPageIndexで何番目のタブが選択されたかわかりますが、この行為をTabControl1_SelectedIndexChangedで行ないたいです。ブレイクを貼ってsenderの中を見るとselectindexという項目を使えばわかるような気がするのですが、senderの中身の取得方法がわかりません。初歩的な質問で申し訳ないのですが、お願いします。
> ブレイクを貼ってsenderの中を見るとselectindexという項目を使えば> わかるような気がするのですが、senderの中身の取得方法がわかりません。senderは常にSystem.Object型なので,対象の型にキャストする必要があります。# Option Strict Offは最後の手段……。というわけで,TryCast(sender, TabControl)のようにしてみてはどうでしょうか。でも,元々の目的> タブを選択した時に、どのタブが選択されたかを知りたいのですがであれば,e.TabPageIndexとかe.TabPageでよい気がしますが。
> でも,元々の目的> > タブを選択した時に、どのタブが選択されたかを知りたいのですが> であれば,e.TabPageIndexとかe.TabPageでよい気がしますが。これは勘違いなので,無視してください。# SelectedIndexだとEventHandlerですね……。
> senderは常にSystem.Object型なので,対象の型にキャストする必要があります。> # Option Strict Offは最後の手段……。VB2008 なら、sender As TabControl で宣言できたりします。# 今回は 2005 なので、無意味な情報ですけれども。
> VB2008 なら、sender As TabControl で宣言できたりします。反変性に違反するなぁ,と思ったら,Option Strict Offの場合のみですね。ようやくVBでもデリゲートの共変・反変をサポートですか。でも,イベントデリゲートで共変・反変を使う事は滅多になさそう……。# オーバーライド時の共変・反変サポートはないのかな……。
・DirectCast / TryCast キーワードを使って TabControl にキャストする。・sender を使わず TabControl1.SelectedIndex を参照する。・普通に Selected イベントを使う。
YuO様魔界の仮面弁士様Hongliang様本当にありがとうございました。その後無事に解決できました。お礼が遅くなり、申し訳ないです。本当にありがとうございました。