【问题标题】:How to remove and execute functions on items one-by-one in VB.net listbox如何在 VB.net 列表框中逐一删除和执行项目的功能
【发布时间】:2014-10-19 02:03:32
【问题描述】:

所以我有一个看起来像这样的 VB.net 函数:

Private Sub FlatButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FlatButton2.Click
    Dim fs As FileSystemSecurity = File.GetAccessControl(FlatListBox1.SelectedItem)
    fs.RemoveAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.Modify, AccessControlType.Deny))
    File.SetAccessControl(FlatListBox1.SelectedItem, fs)
    FlatListBox1.ClearSelected()
End Sub

我知道如何在单个项目中反转此操作,但我不知道如何对列表框中的每个项目执行此操作。当我按下退出表单上的按钮时,我想这样做。我该怎么办?我尝试了 For Each 循环,但它不起作用,至少不是我这样做的方式。

【问题讨论】:

  • 也许如果你展示了 foreach 循环,我们可以指出错误在哪里。

标签: vb.net button listbox access-control


【解决方案1】:

如果您想遍历所有项目以删除访问规则,则如下所示。

Private Sub RemoveAccessRule(item As String)
  Try
    Dim fs As FileSystemSecurity = File.GetAccessControl(item)
    fs.RemoveAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.Modify, AccessControlType.Deny))
    File.SetAccessControl(item, fs)
  Catch
  End Try
End Sub

用法:

For Each item As String In FlatListBox1.Items
   RemoveAccessRule(item)
Next

【讨论】:

  • 嗯,这似乎不起作用,它不会引发任何错误,但是在我按下退出按钮后,所选的 .exe 文件仍然无法访问。这是退出表单的代码:pastebin.com/9B5n3bEM
  • 我在调试输出中得到了这个:在 mscorlib.dll 中发生了“System.IO.FileNotFoundException”类型的第一次机会异常
  • 您可能需要将文件夹路径添加到该文件名。
  • 它有完整路径,我认为这可能与应用程序无权访问该exe有关
  • 也许,尝试以管理员身份运行您的应用程序或右键单击 VS exe 并使用此解决方案以管理员身份运行 VS 以进行调试。
猜你喜欢
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多