簡體   English   中英

滾動時找到面板的左上角坐標

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM