[英]Find the upper left coordinate of a panel when scrolling
滾動時如何找到面板的左上角坐標? (.net 2)
讓我們說一個VB.NET中的示例,該示例在自定義面板(myPanel.vb)的左邊框中維護一個textBox:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
TextBox1.Location = New Point(AutoScrollPosition.X, TextBox1.Location.Y)
...
此代碼不起作用...
我也嘗試過
Dim parentPanel As Panel = DirectCast(Parent, Panel)
TextBox1.Location = _
New Point(parentPanel.AutoScrollPosition.X, TextBox1.Location.Y)
效果不佳。
在第一種情況下,AutoscrollPosition始終保持= 0,在第二種情況下,面板完全不滾動。
您可以使用AutoScrollPosition
屬性
最后,找到問題。此問題始終與將面板聚焦於第一個啟用的控件(在我們的情況下為texbox)有關 。
當texbox處於活動狀態時,它會接收焦點並向后滾動滾動位置。
因此,將texbox保留在左側邊框的解決方案是
A)禁用文本框(textBox1.Enabled = false)
B)在主機控制面板中,使用以下命令覆蓋OnPaint :
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim parentPanel As Panel = DirectCast(Parent, Panel)
TextBox1.Location = _
New Point(-parentPanel.AutoScrollPosition.X, TextBox1.Location.Y)
當然,在啟用了textBox的情況下執行相同的操作會很有趣...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.