none
ToolTIPが再表示されない RRS feed

  • 質問

  • こんにちは

     

    <環境>

    Visual studio 2003 sp1

    WIndows 2000 sp4, Windows XP pro sp2

     

    MDIプログラムを作成しているのですが、Childrenフォームに設定しているToolTipが表示されなくなります。

    タイミングはプログラムがAcitiveでなくなった時です。起動直後は問題なく表示されるのですが、他のプログラムを操作して再度Activeにすると以後ToolTIpが表示されなくなります。

     

    過去ログを見ると2002でバグがあるとか最初に表示したフォームが所有者になるというケースはありましたが今回は関係なさそうです。

    何か良い解決策はないでしょうか?

    よろしくお願いします。
    2007年7月13日 5:36

すべての返信

  • ワンダユウさん こんにちは。

    バージョン違いで参考にならないかもわかりませんが、Visual Basic2005で試してみましたが、現象は再現できませんでした。

    アプリケーションがアクティブになったときに再度 SetToopTipを呼び出す方法で回避できませんか?MDI親フォームのActivatedイベントが適当と思います。

    2007年7月13日 10:53
  • 三輪の牛さん、こんにちは。

    回答ありがとうございます。

     

    2005では再現しないとのことなので色々と環境を変えてみた結果原因が

    ActiveXだとわかりました。

    サードパーティのActiveXコンポーネントがフォーム上に存在すると何故か表示されません。

    他のActiveXでは問題がないので、おそらくコンポーネントのバグだと思います。

     

    メーカーに問い合わせてみます。

    すいません、原因の切り分けが甘くお騒がせしました。

    2007年7月17日 1:51
  • 自己レスですが、その後の進捗です。

     

    メーカーに問い合わせた結果

    >>

    弊社での調査の結果、他の製品やサンプルで作成した単純なActiveXでも同様の
    現象が発生することが確認できました。このことより、本製品固有の問題ではないと思われます。
    また、Visual Basic 6で作成したMDIのアプリケーションや、
    .NET Framework 2.0の環境では、本現象が発生しませんでした。このことより、
    .NET Framework 1.1に本現象の原因がある可能性が高いと思われます。
    <<

     

    だそうです。

    私のテストではFramework 1.1でも表示されるActiveXはあったのですが、

    その辺はメーカーがMicrosoftに問い合わせてくれるそうです。

     

     

    <現在までにわかっている対応策>

    ToolTipをフォームデザイナで貼り付けて、コンポーネントのToolTipプロパティに値をセットする方法では

    MDI環境で非表示になる場合がある

    フォームロードイベント以降にコーディングで

    ToolTipを作成し、SetToolTip関数でのコンポーネントへの登録を行う

     

    この方法だと何故か現象が回避できます。

    2007年7月25日 2:41