2010-12-20 9 views
1

私はVB.Net 2010フレームワーク2.0で作業しています。 大きな文字列をツールチップオブジェクトに設定しています。この場合、ツールチップが表示されません。文字列が短い場合(例えば10行)、tooptipが正しく表示されます。長い文字列に設定するとツールヒントが表示されないのはなぜですか?

次のコードです:

Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs) 
    If _showToolTip Then 
     If Not IsNothing(_tooltipDSPanel) Then 
      _tooltipDSPanel.Dispose() 
      _tooltipDSPanel = Nothing 
     End If 
     _tooltipDSPanel = New ToolTip 
     _tooltipDSPanel.SetToolTip(Me, PanelText) 
    End If 
End Sub 

"PanelTextは"(50行を言う)が長すぎる場合、それは表示されません。時には空のツールチップが表示されることがあります。

どこが間違っていますか?

お返事ありがとうございます。

+1

なぜあなたは毎回 'ToolTip'オブジェクトを破棄して再作成しますか? –

+0

短い文字列でうまく動作すると仮定すると、表示されない場合は長さを繰り返し半分にし、表示されている場合は50%長くすることで、動作する最長の長さを見つけてください。そして、割り当てられたツールヒント値を投稿するか、非常に単純な文字列(単に "abc"文字列を繰り返します)を入力して、特殊文字がないことを確認してください。 – TheBlastOne

+0

メモリリークを避けるために、処分して再作成してください。 – Amol

答えて

0

ツールチップは大量のテキスト用に設計されていません。文字数が増えると、そのパフォーマンスは急速に低下します。私の経験では約1000文字までしか使えません。これ以上何も表示されるまでに数秒かかります。したがって、実際にレンダリングする前に消えている可能性があります。 AutoPopDelayを高い数字に設定してみると、まったく表示されているかどうかを確認します。

+0

同じ問題私も直面しているので、私は要約のようなツールチップを表示しようとしています。 .Netエディタツールのように同じです。コードが折りたたまれ、マウスがその上にホールドされると、省略記号付きのツールチップが表示されます。だから、誰かがこれについて私にツールチップに楕円を表示する方法を教えてもらえますか? – Amol

0

ツールチップがポップするとマウスの離脱イベントが発生し、ツールチップが表示されたときにツールチップを殺して新しいマウスイベントを開始するため、奇妙なことが起こります。

私は通常ちょうどこれを行うだろう:

If _showToolTip Then 
      _tooltipDSPanel.SetToolTip(Me, PanelText) 
    End If 

あなたはちょうどあなたがする必要があるときだけそれに異なるテキストを与え、1ツールチップを必要としています。そして、あなたはそれが完了したときにそれを処分することについてフォームが心配するようにすることができます。

2

ToolTip.SetToolTipはTTM_SETTOOLINFOメッセージを使用してツールチップを更新します。このメッセージのためのSDKドキュメントは、このフレーズ含む:TTM_SETTOOLINFOを呼び出すとき

を 文字列が 終端NULLを含む長さ80のTCHAR単位、 を超えてはならないTOOLINFO構造体のlpszText メンバーによって指されます。

更新されたヒントテキストは80文字を超えることはできません。この制限はWindowsのそれ以降のバージョンで拡大されていますが、使用しているものは何も言いませんでした。

一般的に、多くのテキストがヒントに表示されないようにしたいとします。ユーザが小部屋を読むのに十分長いと見えない。代わりにF1ヘルプを実装することを検討してください。

関連する問題