为啥更新不同的 TextBox.Text 时面板会自动向上滚动?

Posted

技术标签:

【中文标题】为啥更新不同的 TextBox.Text 时面板会自动向上滚动?【英文标题】:Why does a Panel automatically scroll up when a different TextBox.Text is updated?为什么更新不同的 TextBox.Text 时面板会自动向上滚动? 【发布时间】:2015-01-30 20:22:38 【问题描述】:

我创建了一个表单并将其显示在面板中,但遗憾的是该表单无法容纳。所以我需要使用Panel.Autoscroll = True 来导航整个表单。

当我单击表单最下方的textbox1.text 时,面板会自动向上滚动并且看不到文本框。即使我向下滚动它也会自动向上滚动。 如何阻止它向上滚动?

这是我的代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Form2.TopLevel = False 
    Me.Panel1.Controls.Clear() 
    Me.Panel1.Controls.Add(Form2) 
    Form2.Show() 
End Sub 

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    Label2.Text = Date.Now.ToString("dd/MMM/yyyy ddddddddd") 
    Label1.Text = Date.Now.ToString("h:mm:ss tt")
End Sub

我意识到当日期文本设置为标签时面板会向上滚动。有没有办法防止这种情况发生?

【问题讨论】:

这是winforms还是asp.net? 我试图重现这种行为但不能。您能否澄清“在面板内显示表单”?那是 Form 你把 Panel 放在另一个 Form 里面吗? 重新思考你的 UI 设计 请在您的问题中发布您的代码。不要将其隐藏在 cmets 中。 我想我会使用Hans的扩展方法:***.com/questions/1969705/… 【参考方案1】:

您可以通过使用自己的面板并覆盖 ScrollToControl 函数来解决您的问题:

Public Class PanelEx
  Inherits Panel

  Protected Overrides Function ScrollToControl(c As Control) As Point
    Return Me.DisplayRectangle.Location
  End Function    
End Class

重建解决方案后,用 ToolBox 中的这个新面板替换 Panel1 面板。

【讨论】:

非常感谢!现在工作正常。非常感谢您的帮助。

以上是关于为啥更新不同的 TextBox.Text 时面板会自动向上滚动?的主要内容,如果未能解决你的问题,请参考以下文章

WPF:解决数据绑定时不更新数据的问题

更新查询无法正常工作c#winform

wpf,我给一个textbox的text绑定到一个listv.selectionitem.path,

为啥我的面板在小于明确尺寸时会一直夹在面板周围?

Unity 脚本中公共变量初始化值修改后,为啥Inpector面板的对应变量属性不更新?

[经验]Textbox 做日志记录,