當滑鼠停留textbox,並且文字長度超過textbox顯示長度
將內容描繪在Panel之上,呈現完整文字內容
===============================================
要設定Panel 的 parent 是在哪個 容器之下
好像超出邊界,會有問題
因為不是單純在 form之上
而是堆疊在其他容器
有點麻煩
How to find the "real" screen position of a control
Dim ScreenPos as point=me.PointToScreen(new point(0,0))
目前改Panel 由Form 完成
減少這些問題
|
============================================
目前測試可行
在注意遺下 Mouse Enter 發生在 TextBox 時,繪製 Panel
Mouse Leave 發生在 Panel 時, 將 Panel 關掉
'放大Panel
Private Sub TextBox1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.MouseEnter
Panel1.BringToFront()
Panel1.Visible = True
End Sub
'關掉 Panel
Private Sub Panel1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.MouseLeave
Panel1.Visible = False
TextBox1.BringToFront()
TextBox1.Visible = True
End Sub
'Panel 描繪事件
Private Sub Panel1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
Panel1.Location = TextBox1.Location
'描繪 TextBox 內容
DisplayData(e)
End Sub
'描繪 TextBox 內容
Public Sub DisplayData(ByVal e As PaintEventArgs)
' Display the result.
Dim myFont As New Font("Arial", 8)
Dim myBrush As New SolidBrush(Color.Black)
Dim textSize As SizeF
Dim pg = Panel1.CreateGraphics
'Graphics.MeasureString(測量字串,文字格式), 傳回字串呈現的浮點數長寬
textSize = pg.MeasureString(TextBox1.Text, myFont)
Panel1.Size = New Point(textSize.ToSize.Width + 4, textSize.ToSize.Height + 8)
e.Graphics.DrawString(TextBox1.Text, myFont, myBrush, _
New PointF(0, 0))
End Sub
再來計算遺下,畫面上的TextBox內容是不是超過顯示長度
Graphics.MeasureString 方法 (String, Font)
MeasureString 方法是設計用來與個別字串一起使用,並在字串前後包含少量的額外空格以便容納突出的圖像。 此外,DrawString 方法會調整圖像點使顯示品質最佳化,而且可能將字串顯示得比MeasureString 所描述的還要窄。
若要取得適合配置中相鄰字串的度量資訊 (例如,實作格式化字串時),請使用 MeasureCharacterRanges 方法,或接受 StringFormat 物件的其中一個 MeasureString 方法,並傳遞 GenericTypographic。 此外,也請確定 Graphics 的 TextRenderingHint 為 AntiAlias。
=============================================
[C#][VB.NET]如何在 DrawString 繪製指定的文字字串增加底色與得到文字所占大小
VB 2005 - 讀者詢問 DrawString 問題
http://blog.xuite.net/alwaysfuturevision/liminzhang/8683732
沒有留言:
張貼留言