如何修复VB中的此表达式和值错误?

时间:2019-12-16 22:31:02

标签: vb.net expression

Public Class Form1

    Private Sub Move_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        PictureBox1.Location.X = (197 + TrackBar1.Value)
    End Sub
End 

那是我的视觉基本代码。

1 个答案:

答案 0 :(得分:1)

您未设置.Location.X.Location.Y。如果只设置一个,则设置.Left.Top。如果要同时设置两者,则将.Location设置为Point

PictureBox1.Left = (197 + TrackBar1.Value)

出现错误的原因是因为LocationPoint类型,而这是一个值类型。当您获得值类型属性时,您将获得值的副本,而不是对值的引用。这意味着您对副本进行任何更改,而不是原始更改。这样,如果您的代码被允许,则将设置存储在X Point属性中的PictureBox's副本的Location属性。那将不会对PictureBox产生任何影响,并且完全没有用。如果要更改这样的值类型属性,则需要将属性值转换为变量,更改变量,然后将副本分配回该属性:

Dim pt = PictureBox1.Location

pt.X = 197 + TrackBar1.Value
PictureBox1.Location = pt

设置TopLeft属性可以避免此两步操作,因为它是在内部完成的。