PDA

View Full Version : مشكل با ToolTip در نمايش نوشته ها با طول مختلف



swallow.pa
جمعه 15 اسفند 1393, 19:29 عصر
دوستان سلام
من براي نمايش خطاهاي كاربر از Tooltip دارم استفاده مي كنم اما مشكلي كه دارم اينه بعضي نوشته ها طولهاي اون با هم متفاوته وقتي يكبار Tooltip با نوشته هاي كم نمايش داده شده براي نمايش با نوشته هاي بزرگ كامل نمايش نمي دهد و فقط بميزان نوشته هاي قبلي كه نمايش داده مي شود عرض Tooltip نمايش داده ميشه
خب چطور اين مشكل رو حل كنم كه با نوشته هاي مختلف و عرضهاي متفاوت Tooltip تنظيم بشه

ممنونم

gilsoft
جمعه 15 اسفند 1393, 20:16 عصر
خب چطور اين مشكل رو حل كنم كه با نوشته هاي مختلف و عرضهاي متفاوت Tooltip تنظيم بشه

سلام دوست عزیز

به آدرس زیر یه سر بزن:

https://msdn.microsoft.com/en-us/library/system.windows.forms.tooltip.draw(v=vs.110).aspx

موفق باشید .....

swallow.pa
شنبه 16 اسفند 1393, 18:29 عصر
دوست گرامي جناب محرابي راستش من متوجه نشدم كدها رو بررسي كردم )-: ميشه كمك كنيد

swallow.pa
شنبه 16 اسفند 1393, 18:48 عصر
جالبه من با همون كدهاي خودم كه عاديه ولي متن انگليسي نوشته بودم خط بعد رفت فقط با متن فارسي مشكل داره
كد عادي من هم اينه
ToolTip1.Show("كد ملي اشتباه مي باشد آنرا اصلاح كنيد", txtNationalCode, -10, -70)

gilsoft
شنبه 16 اسفند 1393, 23:16 عصر
دوست گرامي جناب محرابي راستش من متوجه نشدم كدها رو بررسي كردم )-: ميشه كمك كنيد


سلام مجدد


کدهایی رو که تو آدرس پست 2# بهتون معرفی کردم .. رو به شکل زیر تغییر دادم:
Imports SystemImports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles


' Form for the ToolTip example.
Public Class ToolTipExampleForm
Inherits System.Windows.Forms.Form


Private WithEvents toolTip1 As System.Windows.Forms.ToolTip
Private WithEvents Button1 As System.Windows.Forms.Button
Private WithEvents Button2 As System.Windows.Forms.Button
Private WithEvents Button3 As System.Windows.Forms.Button


Private Sub ToolTipExampleForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'
' لطفا پس از اجرای برنامه .. نشانگر ماوس را بر روی یکی از باتن‌ها ببرید
'
' Create the ToolTip and set initial values.
Me.toolTip1 = New System.Windows.Forms.ToolTip
Me.toolTip1.AutoPopDelay = 5000
Me.toolTip1.InitialDelay = 500
Me.toolTip1.OwnerDraw = True
Me.toolTip1.ReshowDelay = 10


' Create button1 and set initial values.
Me.button1 = New System.Windows.Forms.Button
Me.button1.Location = New System.Drawing.Point(110, 8)
Me.button1.Text = "Button 1"
Me.toolTip1.SetToolTip(Me.button1, "Button1 tip text")


' Create button2 and set initial values.
Me.button2 = New System.Windows.Forms.Button
Me.button2.Location = New System.Drawing.Point(110, 36)
Me.Button2.Text = "Button 2"
Me.Button2.BackColor = SystemColors.ButtonFace
Me.toolTip1.SetToolTip(Me.Button2, " Button2 روی tip آزمایش ")


' Create button3 and set initial values.
Me.button3 = New System.Windows.Forms.Button
Me.button3.Location = New System.Drawing.Point(110, 64)
Me.button3.Text = "Button 3"
Me.toolTip1.SetToolTip(Me.button3, "Button3 روی tip آزمایش")


' Set up the Form.
Me.Controls.AddRange(New Control() {Me.button1, Me.button2, Me.button3})
Me.Text = "owner drawn ToolTip example"
End Sub


' Clean up any resources being used.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If (disposing) Then toolTip1.Dispose()
MyBase.Dispose(disposing)
End Sub


' Determines the correct size for the button2 ToolTip.
Private Sub toolTip1_Popup(ByVal sender As System.Object, ByVal e As PopupEventArgs) Handles toolTip1.Popup


If e.AssociatedControl Is Button2 Then
Dim FNT As New Font("Tahoma", 14)
Try
e.ToolTipSize = TextRenderer.MeasureText(toolTip1.GetToolTip(e.Ass ociatedControl), FNT)
Finally
FNT.Dispose()
End Try
End If
End Sub


' Handles drawing the ToolTip.
Private Sub toolTip1_Draw(ByVal sender As System.Object, ByVal e As DrawToolTipEventArgs) Handles toolTip1.Draw
' Draw the ToolTip differently depending on which
' control this ToolTip is for.


' Draw a custom 3D border if the ToolTip is for button1.
If (e.AssociatedControl Is button1) Then
' Draw the standard background.
e.DrawBackground()


' Draw the custom border to appear 3-dimensional.
e.Graphics.DrawLines(SystemPens.ControlLightLight, New Point() {New Point(0, e.Bounds.Height - 1), New Point(0, 0), New Point(e.Bounds.Width - 1, 0)})
e.Graphics.DrawLines(SystemPens.ControlDarkDark, New Point() {New Point(0, e.Bounds.Height - 1), New Point(e.Bounds.Width - 1, e.Bounds.Height - 1), New Point(e.Bounds.Width - 1, 0)})


' Specify custom text formatting flags.
Dim sf As TextFormatFlags = TextFormatFlags.VerticalCenter Or TextFormatFlags.HorizontalCenter Or TextFormatFlags.NoFullWidthCharacterBreak


' Draw standard text with customized formatting options.
e.DrawText(sf)
ElseIf (e.AssociatedControl Is button2) Then
' Draw a custom background and text if the ToolTip is for button2.


' Draw the custom background.
e.Graphics.FillRectangle(Brushes.Honeydew, e.Bounds)


' Draw the standard border.
e.DrawBorder()


' Draw the custom text.
Dim SF As StringFormat = New StringFormat
Try
SF.Alignment = StringAlignment.Center
SF.LineAlignment = StringAlignment.Center
SF.HotkeyPrefix = System.Drawing.Text.HotkeyPrefix.None
SF.FormatFlags = StringFormatFlags.NoWrap


Dim FNT As Font = New Font("Tahoma", 8.25!, FontStyle.Regular, GraphicsUnit.Point, 178)
Try
e.Graphics.DrawString(e.ToolTipText, FNT, SystemBrushes.ActiveCaptionText, RectangleF.op_Implicit(e.Bounds), SF)
Finally
FNT.Dispose()
End Try
Finally
SF.Dispose()
End Try
ElseIf (e.AssociatedControl Is button3) Then
' Draw the ToolTip using default values if the ToolTip is for button3.
e.DrawBackground()
e.DrawBorder()
e.DrawText()
End If
End Sub
End Class

تو کدهای فوق 2تا Event به نامهای toolTip1.Popup و toolTip1.Draw وجود داره .. که اگه بهشون خوب دقت کنی .. به مقصودت میرسی


هر قسمت که مشکل داشتی .. فقط شماره سطرها رو بگو .. تا من براتون توضیح بدم ....


در واقع من هم برای بار اول به این کدها برخورد کردم و همان لحظه اونا رو به شما معرفی کردم .... حقیقتاً ایده‌ی خوبی از این کدها گرفتم ....


منتظر سئوالات شما هستم ...


موفق باشید ....