DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Tooltipの応答?時間

環境/言語:[WindowsXP]
分類:[.NET]

 こんばんは。
 FormのTextBox上にマウスのカーソルを持っていった時、例えば「必須項目。数字10桁まで」とか出したいのですが、FormをLoad直後は表示されず、別のTextBoxへ一旦マウスでカーソルをもっていってから、目的のTextBoxにカーソルを持ってくると表示されます。

コードとしては、
 Private Sub TxtXXcd_MouseHover(ByVal sender As Object, ByVal e As        System.EventArgs) Handles TxtXXcd.MouseHover
ToolTip1.SetToolTip(TxtXXcd, "必須。数字10桁まで")
End Sub

Tooltipは、ツールボックスからもってきたままです。

で、目的のTextBoxのプロパティの1番上に表示される、「ToolTip1のToolTip」に何か入力すると、すぐ表示されます。
Load直後は、初期画面表示のためにテーブル読み込んでいる時間のせいかな?と思って、Loadしてもしばらく待ってからカーソル持って行っても同じ現象です。
いったいどういう理由でこうなるのでしょうか?
よろしくお願いします。
こんにちわ、Shinoさん。いつも熱心ですね。

■No5262に返信(Shinoさんの記事)
> コードとしては、
>  Private Sub TxtXXcd_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtXXcd.MouseHover
> ToolTip1.SetToolTip(TxtXXcd, "必須。数字10桁まで")
> End Sub
>
> Tooltipは、ツールボックスからもってきたままです。
>
> で、目的のTextBoxのプロパティの1番上に表示される、「ToolTip1のToolTip」に何か入力すると、すぐ表示されます。
> Load直後は、初期画面表示のためにテーブル読み込んでいる時間のせいかな?と思って、Loadしてもしばらく待ってからカーソル持って行っても同じ現象です。
> いったいどういう理由でこうなるのでしょうか?
> よろしくお願いします。

ToolTip1.SetToolTip(TxtXXcd, "必須。数字10桁まで")

↑これって、なぜ、MouseHoverイベントでやってるんでしょう。
FormLoadなり、コンストラクタの後ろの方でやればよいと思うのですが。
この当たりが原因かと思われます。
ToolTip::SetToolTip() メソッドの機能を何か勘違いされてませんか?


/* Form_Loadイベント*/
Private Sub frmMain_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  MyClass.SetToolTips()  ' //↓のメソッドをコール
End Sub

/* ToolTipを設定するメソッド */
Private Sub SetToolTips()
  With
    .SetToolTip(txtBushoCode, "部署コードを5桁で入力します。")
    .SetToolTip(txtTokuisaki, "得意先を12桁で入力します。")
    .SetToolTip(txtDateProc, "処理日をYYYYMMDDの形式で入力します。")
    .SetToolTip(txtHogeCode, "ほげほげ。")
          :
          :
  End With
End Sub

で、出来るはずです。
java.lang.Nullpo さん、レスありがとうございます。

私のやりたいことは、入力項目のちょっとしたガイドみたいな感じで、マウスを持ってったらガイドが現れるのをイメージしています。

書いて頂いたコードを参考にして、
FormをLoadするところに、

With ToolTip1
.SetToolTip(CmbXXX, "<選択必須>いずれかのXXXX番号を選択")
.SetToolTip(Radio1, "<選択必須>いずれかのXXXXを選択")
.SetToolTip(Radio2, "<選択必須>いずれかのXXXXを選択")
.SetToolTip(Radio3, "<選択必須>いずれかのXXXXを選択")
.SetToolTip(Radio4, "<選択必須>いずれかのXXXXを選択")
 .SetToolTip(TxtXXcd, "<必須>数字で最大10桁まで")
.SetToolTip(TxtKana, "<任意>半角カナで最大24桁まで")
End With

各コントロールのプロパティの、「ToolTip1のToolTip」は全部消しました。
で、Loadしてみると、最初のCmbBoxのところは表示されますが、後は・・・?

>FormLoadなり、コンストラクタの後ろの方でやればよいと思うのですが。

そもそもTooltipを私が勘違いしているのでしょうか?コンストラクタって?
申し訳ありません、お願いします。
■No5294に返信(Shinoさんの記事)
> 私のやりたいことは、入力項目のちょっとしたガイドみたいな感じで、マウスを持ってったらガイドが現れるのをイメージしています。

マウスをしばらくポイントしているとツールチップが出るはずですが? 出ませんか?

> 書いて頂いたコードを参考にして、
> 各コントロールのプロパティの、「ToolTip1のToolTip」は全部消しました。
> で、Loadしてみると、最初のCmbBoxのところは表示されますが、後は・・・?

ちなみに画面デザイナで、各コントロールのToolTipプロパティを設定することは、
コードで、ToolTip::SetToolTip(設定するコントロール As [Control], 設定する文字 As [String])と同じことです。
ですので ───

■No5262(Shinoさんの記事)
> Private Sub TxtXXcd_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtXXcd.MouseHover
>   ToolTip1.SetToolTip(TxtXXcd, "必須。数字10桁まで")
> End Sub

↑MouseHoverイベントでやってたので、SetToolTip()メソッドの機能を勘違いされてないかと思ったのですが...
 違いますか?

> > FormLoadなり、コンストラクタの後ろの方でやればよいと思うのですが。
> そもそもTooltipを私が勘違いしているのでしょうか?コンストラクタって?
> 申し訳ありません、お願いします。

Form自体も「クラス」なんです。
コンストラクタというのは、クラスでインスタンスが生成された時に実行される初期化みたいなイベントだと思ってください。
まあ、今回はForm::Loadイベント一歩手前で起こるものと考えていいでしょう。
なので、Form::Loadイベントに記述して頂いても結構です。

もしかして、オブジェクト指向をご存知なくて手探りでやっていませんか?
それは結構厳しいです。今は、オブジェクト指向言語が主流になってますし。
オブジェクト指向がわかれば、Java、C++、C++.NET、C#も組めるといっていいです。(Windows限定の話ですが)
また、汎用的なクラスを作っておけば、継承という概念で自由に使いまわしもできます。

VB6までは完全なオブジェクト指向言語ではなく手続言語だったので、
力技で組もうと思えば組めますが、私はクラスを意識して組んでます。
それは、後で誰もが見てわかりやすいからです。
このようにオブジェクト指向は、コードの可読性にも寄与します。
(言い方に御幣がありますが、うまく説明できないので…)

ただ... オブジェクト指向を勉強することをお勧めします。
あと、ネット環境があるのですから、Googleなりで検索して調べることも大切です。

# 偉そうなこと言ってますが、私はダメグラマーなのでネットでよく調べてやってます。
java.lang.Nullpoさん、こんにちは。

> マウスをしばらくポイントしているとツールチップが出るはずですが? 出ませんか?

やはり、なんか出たり出なかったり?みたいで、いまいち反応が悪いため、
InitialDelayを初期値500→1にしました。で、マウス持っていったらパッパッと出ました。

> もしかして、オブジェクト指向をご存知なくて手探りでやっていませんか?

ええ、かなり手探りです(笑)。VB自体初めてのため。ホントはクラスとかを理解してからやりたいのですが、ちょっとしたシステムのため、理解と納期を天秤にかけると、ちょっと時間的に無理そうだったので。

確かに、最近聞きすぎで申し訳ないと思ってますが、よろしくお願いします。
こんにちわ、Shinoさん。
最近はよくお世話になります。

■No5305に返信(Shinoさんの記事)
>>マウスをしばらくポイントしているとツールチップが出るはずですが? 出ませんか?
> やはり、なんか出たり出なかったり?みたいで、いまいち反応が悪いため、
> InitialDelayを初期値500→1にしました。で、マウス持っていったらパッパッと出ました。

あ... ディレイが鬱陶しいので、さっとToolTipが表示するようにしたいって意味でしたか。
すいません、私が勘違いしていたようです。全く表示されないのかと思ってました。
それで、今現在の動きで仕様は満たせることはできましたか?

>>もしかして、オブジェクト指向をご存知なくて手探りでやっていませんか?
> ええ、かなり手探りです(笑)。VB自体初めてのため。ホントはクラスとかを理解してからやりたいのですが、ちょっとしたシステムのため、理解と納期を天秤にかけると、ちょっと時間的に無理そうだったので。

確かに、いきなりは難しいでしょうね。頑張ってください。
私も、つい最近始めたばかりですのでまだわからないことばかりです。

> 確かに、最近聞きすぎで申し訳ないと思ってますが、よろしくお願いします。

いえ、質問することは向上心がなければできないことなので良いことだと思います。

Shinoさんの場合は、
 ・調べた結果わからなかった
 ・ここまでは出来たけどこの先はわからない

という質問ばかりですので、何でもかんでも丸投げしているようには見えません。
それに、誠意も懸命さが伝わってきますし…

# 私も見習わなくては…
  • 題名: Re[6]: Tooltipの応答?時間
  • 著者: Shino
  • 日時: 2004/08/04 3:14:01
  • ID: 5329
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
java.lang.Nullpoさん、こんばんは、大変お世話になっております。

> それで、今現在の動きで仕様は満たせることはできましたか?
ええ、イメージどおりの動きになりました。

>>確かに、最近聞きすぎで申し訳ないと思ってますが、よろしくお願いします。
> いえ、質問することは向上心がなければできないことなので良いことだと思います。

ありがとうございます! これで、心おきなく、また質問させて頂きます(笑)
正直、もっと控えるべきか・・・と思っていました。

では、このTooltipに関しての質問は、「解決済み!」とさせて頂きます。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板