vb.net在控件之间传递变量

vb.net在控件之间传递变量,vb.net,Vb.net,这是我的密码 Public Sub Personalize_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For Each fi As FileInfo In New DirectoryInfo(Application.StartupPath + "\web").GetFiles Dim pictooltip As New ToolTip

这是我的密码

Public Sub Personalize_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    For Each fi As FileInfo In New DirectoryInfo(Application.StartupPath + "\web").GetFiles
        Dim pictooltip As New ToolTip
        Dim pbx As New Button
        AddHandler pbx.Click, AddressOf pbx_click
        pbx.Width = 150
        pbx.Height = 150
        pbx.BackgroundImage = Image.FromFile(fi.FullName)
        wallpapers.Controls.Add(pbx)
        pbx.Cursor = Cursors.Hand
        pictooltip.SetToolTip(pbx, fi.Name)
        pbx.BackgroundImageLayout = ImageLayout.Stretch

    Next
End Sub

Private Sub pbx_click()
    main.BackgroundImage = Image.FromFile(fi.FullName)
End Sub

我不知道如何在pbx_click()中使用“fi”

有什么提示吗???

试试这个

Public Class Form1

Dim fi as FileInfo

Public Sub Personalize_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    For Each Me.fi In New DirectoryInfo(Application.StartupPath + "\web").GetFiles
        Dim pictooltip As New ToolTip
        Dim pbx As New Button
        AddHandler pbx.Click, AddressOf pbx_click
        pbx.Width = 150
        pbx.Height = 150
        pbx.BackgroundImage = Image.FromFile(fi.FullName)
        wallpapers.Controls.Add(pbx)
        pbx.Cursor = Cursors.Hand
        pictooltip.SetToolTip(pbx, fi.Name)
        pbx.BackgroundImageLayout = ImageLayout.Stretch

    Next

End Sub

Private Sub pbx_click()
    main.BackgroundImage = Image.FromFile(fi.FullName)
End Sub

End Class

将您的活动更改为:

Private Sub pbx_click(sender As Object, e As System.EventArgs)
    main.BackgroundImage = Image.FromFile(DirectCast(sender, Button).BackgroundImage)
End Sub
或者,您可以使用Tag属性并存储一些序列化数据。请参见此处:

只需将全名()放入按钮的Tag()属性中,并在单击时将其拉出:

Dim pbx As New Button
pbx.Tag = fi.FullName
将其拔出:

Private Sub pbx_click()
    main.BackgroundImage = Image.FromFile(DirectCast(sender, control).Tag.ToString())
End Sub

您的Fi在第一个子例程(或sub)中本地声明

在Personalize_Load sub之外声明Fi,然后将数据传递给它

 Dim fi as String = ""

Public Sub Personalize_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each fii As FileInfo In New DirectoryInfo(Application.StartupPath + "\web").GetFiles
    Dim pictooltip As New ToolTip
    Dim pbx As New Button
    AddHandler pbx.Click, AddressOf pbx_click
    pbx.Width = 150
    pbx.Height = 150
    pbx.BackgroundImage = Image.FromFile(fii.FullName)

    fi = fii.FullName

    wallpapers.Controls.Add(pbx)
    pbx.Cursor = Cursors.Hand
    pictooltip.SetToolTip(pbx, fi.Name)
    pbx.BackgroundImageLayout = ImageLayout.Stretch

    Next
 End Sub

Private Sub pbx_click()
    main.BackgroundImage = Image.FromFile(fi)
End Sub

然后,您可以使用pbx_click(),只需在任何子系统上调用它,或尝试将其发送给处理程序。

不起作用:((对象引用未设置为对象的实例。)未定义“RoutedEventArgs”类型:(@Ahmad Vision-只需将其设为System.EventArgs。不确定您是否在使用WPF。