【问题标题】:Moving a control by dragging it with the mouse in VB在VB中通过鼠标拖动来移动控件
【发布时间】:2019-10-29 19:03:16
【问题描述】:

this post 的最终答案中,Paweł Wojda 发布了一种使用鼠标移动控件的通用方法。但是,我在 VB 中工作并且无法翻译他的方法,因为没有 control.location 和 control.update 的等价物。如何将相同的功能移植到 VB。

【问题讨论】:

  • 那个问题是使用 Windows 窗体项目(也可在 VB.NET 中使用),但根据您最常用的标签,我猜您使用的是 WPF?如果是这种情况,WinForms 的Control.Location 属性等价于WPF 中的Control.Margin(特别是左上角),而Update 等价于InvalidateVisual(尽管在此不需要调用任何一个)大小写,所以你可以忽略它)。
  • 供将来参考,Windows 窗体 (WinForms) 是可用于创建标准的、接近本机 Windows 应用程序的两种技术中的第一种。它基于 Win32 并使用您的 CPU 呈现其大部分内容。 || Windows Presentation Foundation (WPF) 是两者中的第二个,后来出现,它更像是一种使用 DirectX(以及您的 GPU)来呈现其内容的专业技术。
  • @VisualVincent 是的,我应该添加刚刚添加的“wpf”。我会试试保证金。
  • @VisualVincent 如果您将第一个回复作为答案发布,我会将其标记为已回答我的问题。
  • 很高兴能帮上忙,很抱歉回复晚了。

标签: wpf vb.net


【解决方案1】:

您链接的问题是使用 Windows 窗体项目,但是根据您最常用的标签,我猜您正在使用 WPF。

WinForms 的Control.Location 属性等价于 WPF 中的Control.Margin(特别是顶部和左侧)。

在某种程度上,相当于Control.UpdateControl.InvalidateVisual。虽然,在这种情况下也不需要调用,所以你可以忽略它。

【讨论】:

    【解决方案2】:

    dim down as new boolean 鼠标按下事件:

    Down = true
    

    鼠标向上事件:

    Down =false
    

    鼠标移动事件:

    If down = true Then
          Me.location = cursor.position
     End if
    

    【讨论】:

    • 欢迎来到 Stack Overflow!您的答案仅适用于 WinForms,但就像标签表明 OP 正在使用 WPF 一样。这是两种不同的 GUI 技术,它们只有一些相似之处。无论哪种情况,请确保在回答之前通读整个问题,因为 OP 明确指出 Control.Location(与 Me.Location 指代相同的属性)不存在。谢谢!
    猜你喜欢
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多