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

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

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

このインスタンスがFormかどうかを調べたい

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

■92712 / inTopicNo.1)  このインスタンスがFormかどうかを調べたい
  
□投稿者/ pirelli (1回)-(2019/10/23(Wed) 17:02:15)

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

こんにちは!
VB2013を使用しています。

Dim mainWin As New From1 'Form
Dim subWin As Form 'Form
subWin = New Form2
Dim subCtrl As New Control1 'Formではない

mainWin, subWin, subCtrlの各変数がFormであるかどうかを確認するには
どうすればよいでしょうか?
mainWin, subWinはFormなのでTrueを返すもの、
subCtrlはユーザコントロールのためFalseを返すような式か関数があればいいのですが、
良く分かりません。

よろしくお願いします。
引用返信 編集キー/
■92713 / inTopicNo.2)  Re[1]: このインスタンスがFormかどうかを調べたい
□投稿者/ 魔界の仮面弁士 (2432回)-(2019/10/23(Wed) 17:09:23)
No92712 (pirelli さん) に返信
> Dim mainWin As New From1 'Form
From1 というのは
Form1 ですかね。


> mainWin, subWin, subCtrlの各変数がFormであるかどうかを確認するには
> どうすればよいでしょうか?

If TypeOf subCtrl Is Form Then
引用返信 編集キー/
■92714 / inTopicNo.3)  Re[2]: このインスタンスがFormかどうかを調べたい
□投稿者/ pirelli (2回)-(2019/10/23(Wed) 17:21:08)
2019/10/23(Wed) 17:39:55 編集(投稿者)

>>Dim mainWin As New From1 'Form
> From1 というのは
> Form1 ですかね。

ご指摘の通りです。スミマセン。

>>mainWin, subWin, subCtrlの各変数がFormであるかどうかを確認するには
>>どうすればよいでしょうか?
>
> If TypeOf subCtrl Is Form Then

ありがとうございました。
ちなみに、これがForm2であるかどうかを調べるには、

If TypeOf subWin Is Form2 Then 'True
If TypeOf mainWin Is Form2 Then 'False(Form1)
If TypeOf subCtrl Is Form2 Then 'False(Control1)

で良いのでしょうか?
(自分で確認すれば良いのですが、開発環境のある場所から離れてしまいました。
スミマセン。)
引用返信 編集キー/
■92715 / inTopicNo.4)  Re[3]: このインスタンスがFormかどうかを調べたい
□投稿者/ 魔界の仮面弁士 (2433回)-(2019/10/23(Wed) 18:24:53)
No92714 (pirelli さん) に返信
> ちなみに、これがForm2であるかどうかを調べるには、

「Form2 そのものであるかどうか」を知りたいのでしょうか。
「Form2 または Form2 の派生クラスかどうか」を知りたいのでしょうか。


後者であれば TypeOf でいけます。
https://smdn.jp/programming/netfx/tips/check_type_isassignablefrom_issubclassof/

前者であれば、「If subWin IsNot Nothing AndAlso subWin.GetType() Is GetType(Form2) Then」です。
※VB2015 以降だったら、null 条件演算子で「If subWin?.GetType() Is GetType(Form2) Then」とも書けるのですが。
引用返信 編集キー/
■92718 / inTopicNo.5)  Re[4]: このインスタンスがFormかどうかを調べたい
□投稿者/ pirelli (3回)-(2019/10/24(Thu) 09:41:26)
>>ちなみに、これがForm2であるかどうかを調べるには、
>
> 「Form2 そのものであるかどうか」を知りたいのでしょうか。
> 「Form2 または Form2 の派生クラスかどうか」を知りたいのでしょうか。

現状の問題としては、Form2の派生クラスはないので、後者となります。

なるほど、各変数がFormであるかどうかを確認するのに
If TypeOf subCtrl Is Form Then
でよい理由は、Form1もForm2もFormの派生クラスだからですね。
スッキリしました。
また、純粋にForm2かどうかを調べる方法も勉強してみます。

魔界の仮面弁士様、お付き合い頂きましてありがとうございました。
今後ともどうぞよろしくお願いします。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ