• ベストアンサー

VB2005 アクティブフォームのキャプション(タイトル)取得について

お世話になります。 VB2005(.net)にて、アクティブフォームのキャプションを取得したいのですが可能でしょうか? VB6.0では下記方法にて取得しておりました。 Screen.ActiveForm.Caption ご教授よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

お世話になります。 > MDI親フォームを使用しているとそちらのテキストを取得してしまうのですが、 > 子フォームのテキストを取得する場合はどのようにすればよろしいのでしょうか? Form.ActiveMdiChild プロパティ で 取得すればよろしいかと。 If Form.ActiveForm IsNot Nothing AndAlso Form.ActiveForm.ActiveMdiChild IsNot Nothing Then   Console.WriteLine(Form.ActiveForm.ActiveMdiChild.Text) End If

参考URL:
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.form.activemdichild.aspx
ken-mm
質問者

お礼

naganaga_001さん、何回も質問に回答していただきましてありがとうございました。 無事にやりたいことが可能となりました。

その他の回答 (2)

回答No.2

お世話になります。 System.Windows.Forms.Form.ActiveForm プロパティは、静的プロパティなので Module ・ Class 云々関係なく、 どこでも呼び出すことができます。 > System.Windows.Forms.Form.ActiveFormはNothingになっております。 ActiveForm が Nothing の時は、 そのまんまですが、 動かしているアプリケーション内において、 アクティブな Form が存在していないという事です。 以下のコードで、 Form1 が アクティブである事を Module を通して 出力ウィンドウへ出力することができます。 (Windows アプリケーション) Public Class Form1   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click     Module1.test()   End Sub End Class Module Module1   Public Sub test()     If System.Windows.Forms.Form.ActiveForm IsNot Nothing Then       Console.WriteLine(System.Windows.Forms.Form.ActiveForm.Text & " is ActiveForm")     End If   End Sub End Module

参考URL:
http://msdn2.microsoft.com/ja-JP/library/system.windows.forms.form.activeform.aspx
ken-mm
質問者

補足

naganaga_001さん、ご回答ありがとうございました。 当方、ブレークポイントを設定し確認していたのでNothingとなっておりました。 ブレークポイントをはずして確認できました。ありがとうございました。 追加の質問で申し訳ないのですが、MDI親フォームを使用しているとそちらのテキストを取得してしまうのですが、子フォームのテキストを取得する場合はどのようにすればよろしいのでしょうか? よろしくお願いいたします。

回答No.1

お世話になります。 こんな感じになると思います。 If Not System.Windows.Forms.Form.ActiveForm Is Nothing Then   Console.WriteLine(System.Windows.Forms.Form.ActiveForm.Text) End If

参考URL:
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.form.activeform.aspx
ken-mm
質問者

補足

naganaga_001さん、ご回答ありがとうございます。 取得したい箇所はモジュールですので、System.Windows.Forms.Form.ActiveFormはNothingになっております。 よろしくお願いいたします。

関連するQ&A

  • フォームのキャプションのフォント

    1、VB6のウーザーフォームでInputBOXのようなものを作り、このフォームのキャプションの所にタイトルを表示しています。この、フォントが変えられるないものでしょうか。 2、また、このフォームを呼び出して、テキストボックスに入力してから呼び出しもとに戻り、そのテキストボックスのテキストを読み出してみると、呼び出し前の値しか読み出せません。 いずれも別の方法で対処していますが、上記の方法で出来ないものでしょうか。宜しくお願いします。

  • ユーザーフォームのキャプションに中国語を表示したい

    VBAのユーザーフォームのキャプション(タイトル)に中国語を表示する方法が分かりません。 VBEではコードに中国語の簡体字を入力できないので、ワークシートに中国語を入力しておいて、それをキャプションに表示させたいです。 ラベルのTextやコマンドボタンのCaptionにはこの方法で簡体字を表示できるのですが、ユーザーフォームのCaptionでは?に置換されてしまいます。

  • VB.NETでフォームの画像を取得したい

    VB.NETでフォームに表示されている内容(画像のイメージ)を取得したいのですがその方法が判りません。最終的には、その内容を印刷したいのですが、まずその内容を取得するにはどうしたら良いでしょうか。Alt+PrintScreenキーを押下したイベントを発生させる方法は、除きます。

  • VB6.0 ボタンキャプションの折り返し

    VB6.0でダイアログベースの開発を行っています。 このダイアログにボタンがついているのですが、ボタンキャプションが長くなると、自動的に折り返されてしまいます。 キャプションに与える文字列の性質上、文字列の折り返されるよりは、途中で切れたほうがよいのですが、ボタンのプロパティのなかに折り返しを禁止できそうな項目が見つからず困っています。 どなたかお知恵をお貸しください。 ------ ↓ ソース(一部抜粋)と補足説明 ------- 外部から受け取った文字列がgstrBtn変数に格納されている。 この変数には日本語または英語が入る。 全角文字の場合9文字まで、半角文字の場合13文字まで表示したい。 そこで、Left(gstrBtn, 13)でgstrBtnの先頭から13文字を取り出し、あとはボタン幅で字数を制限しようとしている。 よって、折り返されると都合が悪い。 'ボタンの文字列の設定 If gstrBtn > "" Then cmdFind.Caption = Left(gstrBtn, 13) End If

  • VBAでウィンドウのキャプションとフルパスを取得

    ExcelVBAを用いて、以下のことをやりたいと考えています。 (1)全ウィンドウのハンドルを取得する。 (2)取得したハンドルを、可視ウィンドウのハンドルのみに絞り込む (3)ハンドルから、ウィンドウのキャプション、ファイル名を含むフルパスの2つを抽出する。 (4)Excelのセルへ 「キャプション フルパス ハンドル」 の順に横に並ぶように出力する。 (5)Excelの行を下へ移動する。 (6)(3)~(6)を、全ての可視ウィンドウに対して順に行う。 結果としては 1つめのキャプション 1つめのフルパス 1つめのハンドル 2つめのキャプション 2つめのフルパス 2つめのハンドル 3つめのキャプション 3つめのフルパス …… と結果出力を行いたいと考えています。 まず、他の質問サイトなどの過去暦も含めて探ってみました。 その結果、全可視ウィンドウのキャプションを取得する方法とアクティブウィンドウのフルパスを取得する方法がそれぞれ見つかったのですが、自分なりに組み合わせても上手く動作しませんでした。 なんとか、解決方法を教えていただければと思います。

  • 現在アクティブなフォーム名を取得するには

    アクセスの標準モジュールでのプロシージャーで、現在アクティブなフォーム名を取得したいです。 フォームモジュールなら、Me.Nameでイケますが、すべてのフォームから使えるように、 標準モジュールで作りたいのですが、どうすればいいでしょう? Debug.Print ActiveForm.Name とすると、コンパイルエラーになります。 Debug.Print ActiveForms.Nameでも同じです。ご回答よろしくお願いします。

  • VBのフォームを・・・

    VB.NETで作ったフォームを、 (1)ブラウザ上で表示する (2)Flashのボタンを押すことによって、VBのフォームを表示する 以上の(1)か(2)の方法は可能でしょうか? 本当に困っています。初心者すぎて申し訳ありませんが、ご存知の方はどうかよろしくお願いします!

  • VB6 自分自身のフォームが移動したことを知る方法

    お世話になります。 VB6でメインフォーム(*.exeで起動されるフォーム)がデスクトップ内で移動したことをそのフォーム自身が知るためにはどのようにすればよいでしょうか。 目的は、移動後のフォームの位置情報の取得です。 フォームのサイズを変更した時は"Resize"イベントが発行されるので、それをきっかけにLeft,Top情報を取得できます。 同じようにフォームが移動した時にLeft,Top情報を取得する方法を知りたいです。 API等の利用で可能になるのであればそれでもかまいません。 よろしくお願いします。

  • VB6.0のフォーム間の関数呼び出しについて

    VB6.0のフォーム間の関数呼び出しについて いつもお世話になっております。 これまでVB2005で開発を行ってきたのですが、 これまでの資産の関係上VB6.0での開発を行う必要が出てまいりました。 現在下記のようになっております。 フォーム1:Form1    関数:keisan フォーム2:Form2 Form1ではテキストボックスコントロールを利用した関数keisanがあります。 その関数をForm2上から呼び出すことは可能でしょうか? 以下のやり方では実行できそうでしょうか? call Form1.keisan 初歩的な質問で申し訳ございません。 なにとぞアドバイスをいただけると幸いです。

  • VB6のMDIフォームの最前面表示

    VB6.0のMDIフォーム内の複数フォームの中で、特定のフォームを最前面にしたいのですが、可能でしょうか? もし、可能でしたら、実現方法をご教授くださいませ。

専門家に質問してみよう